Ir para conteúdo
  • Cadastre-se

Normal Problema com script de upgrad


Posts Recomendados

Tenho um script que a arma vai ganhando experiência e upa de acordo com a quantidade de monstros que o player mata, deixando o item +1 até +10. Só que, ao invés da descrição do item ficar: You see a brass armor +2 (arm: 9), fica assim: You see a brass armor +1 +2 (arm: 10). Sempre que upa o level, vai acrescentando na descrição.

Segue o script do sistema:

 

Spoiler

function getItemExp(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "exp") or 0
    end
    return false
end
function getItemLevel(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "level") or 0
    end
    return false
end
function doItemAddExp(item)
    if item.itemid > 0 then
        return doItemSetAttribute(item.uid, "exp", getItemExp(item) + 1)
    end
    return false
end
function doItemAddLevel(item, count)
    if item.itemid > 0 and tonumber(count) then
        return doItemSetAttribute(item.uid, "level", getItemLevel(item) + count)
    end
    return false
end
local table_of_slots = {"head", "body", "legs", "feet", "hands"}  --Slots. Ex.: {"head", "body"}
local min_exp = 500 -- Exp mínima para o monstro valer (exp que fica no monster.xml)
local exp_levels = {2, 4, 6, 180, 280, 400, 550, 700, 900, 1500} -- Exp pra upar. A cada vez que um item atigingir um desses valores de exp, ele upa 1 lvl. (Tem 10, ou seja, nível máximo do item = 10) Pode por mais leveis se quiser.
local slots = {
    ["head"] = 1, 
    ["body"] = 4,
    ["legs"] = 7,
    ["feet"] = 8,
    ["hands"] = {5, 6},
}
function onKill(cid, target, lastHit)   
    
    local tab = {}
    
    if isPlayer(cid) and isMonster(target) then
        if getMonsterInfo(getCreatureName(target)).experience >= min_exp then
            if #table_of_slots > 0 then
                for a, b in pairs(table_of_slots) do
                    if slots then
                        if type(slots) == "table" then
                            for i = 1, #slots do
                                local tb = slots
                                table.insert(tab, tb)
                            end
                        else
                            table.insert(tab, slots)
                        end
                    end
                end
            end
            if #tab > 0 then
                for i = 1, #tab do
                    local item = getPlayerSlotItem(cid, tab)
                    if item.uid > 0 then
                        doItemAddExp(item)
                        if getItemLevel(item) then
                            if isInArray(exp_levels, getItemExp(item)) then
                                if getItemInfo(item.itemid).attack > 0 or getItemInfo(item.itemid).defense > 0 or getItemInfo(item.itemid).armor > 0 then
                                    if getItemLevel(item) ~= #exp_levels then
                                        doItemAddLevel(item, 1)
                                        doItemSetAttribute(item.uid, "name", getItemName(item.uid).." +"..getItemLevel(item))
                                        doSendMagicEffect(getThingPos(cid), 28)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Seu "..getItemNameById(item.itemid).." atingiu "..getItemExp(item).."exp e ganhou 1 level! Agora ele esta level "..getItemLevel(item))
                                        local atk = getItemAttribute(item.uid, "attack") or getItemInfo(item.itemid).attack
                                        local def = getItemAttribute(item.uid, "defense") or getItemInfo(item.itemid).defense
                                        local arm = getItemAttribute(item.uid, "armor") or getItemInfo(item.itemid).armor
                                        if getItemInfo(item.itemid).armor > 0 then
                                            doItemSetAttribute(item.uid, "armor",arm + 1)
                                        elseif getItemInfo(item.itemid).attack > 0 then
                                            doItemSetAttribute(item.uid, "attack",atk + 1)
                                        elseif getItemInfo(item.itemid).defense > 0 and getItemInfo(item.itemid).attack <= 0 then
                                            doItemSetAttribute(item.uid, "defense",def + 1) 
                                        end                                      
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end
    return true
end

function onLogin(cid)
    registerCreatureEvent(cid, "Item level")
    return true
end

 

Gostaria que não conflitasse com outro script que tenho, que muda a descrição também. É um script que adiciona reflet ao equipamento, ficando: You see a brass armor ref 2% (arm: 8).
Dai com esse script, ficaria: You see a brass armor +1 ref 2% (arm: 9).

Agradeço desde já.

Editado por gabriel28 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 20/02/2017 ás 10:27, gabriel28 disse:

Tenho um script que a arma vai ganhando experiência e upa de acordo com a quantidade de monstros que o player mata, deixando o item +1 até +10. Só que, ao invés da descrição do item ficar: You see a brass armor +2 (arm: 9), fica assim: You see a brass armor +1 +2 (arm: 10). Sempre que upa o level, vai acrescentando na descrição.

Segue o script do sistema:

 

  Ocultar conteúdo

function getItemExp(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "exp") or 0
    end
    return false
end
function getItemLevel(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "level") or 0
    end
    return false
end
function doItemAddExp(item)
    if item.itemid > 0 then
        return doItemSetAttribute(item.uid, "exp", getItemExp(item) + 1)
    end
    return false
end
function doItemAddLevel(item, count)
    if item.itemid > 0 and tonumber(count) then
        return doItemSetAttribute(item.uid, "level", getItemLevel(item) + count)
    end
    return false
end
local table_of_slots = {"head", "body", "legs", "feet", "hands"}  --Slots. Ex.: {"head", "body"}
local min_exp = 500 -- Exp mínima para o monstro valer (exp que fica no monster.xml)
local exp_levels = {2, 4, 6, 180, 280, 400, 550, 700, 900, 1500} -- Exp pra upar. A cada vez que um item atigingir um desses valores de exp, ele upa 1 lvl. (Tem 10, ou seja, nível máximo do item = 10) Pode por mais leveis se quiser.
local slots = {
    ["head"] = 1, 
    ["body"] = 4,
    ["legs"] = 7,
    ["feet"] = 8,
    ["hands"] = {5, 6},
}
function onKill(cid, target, lastHit)   
    
    local tab = {}
    
    if isPlayer(cid) and isMonster(target) then
        if getMonsterInfo(getCreatureName(target)).experience >= min_exp then
            if #table_of_slots > 0 then
                for a, b in pairs(table_of_slots) do
                    if slots then
                        if type(slots) == "table" then
                            for i = 1, #slots do
                                local tb = slots
                                table.insert(tab, tb)
                            end
                        else
                            table.insert(tab, slots)
                        end
                    end
                end
            end
            if #tab > 0 then
                for i = 1, #tab do
                    local item = getPlayerSlotItem(cid, tab)
                    if item.uid > 0 then
                        doItemAddExp(item)
                        if getItemLevel(item) then
                            if isInArray(exp_levels, getItemExp(item)) then
                                if getItemInfo(item.itemid).attack > 0 or getItemInfo(item.itemid).defense > 0 or getItemInfo(item.itemid).armor > 0 then
                                    if getItemLevel(item) ~= #exp_levels then
                                        doItemAddLevel(item, 1)
                                        doItemSetAttribute(item.uid, "name", getItemName(item.uid).." +"..getItemLevel(item))
                                        doSendMagicEffect(getThingPos(cid), 28)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Seu "..getItemNameById(item.itemid).." atingiu "..getItemExp(item).."exp e ganhou 1 level! Agora ele esta level "..getItemLevel(item))
                                        local atk = getItemAttribute(item.uid, "attack") or getItemInfo(item.itemid).attack
                                        local def = getItemAttribute(item.uid, "defense") or getItemInfo(item.itemid).defense
                                        local arm = getItemAttribute(item.uid, "armor") or getItemInfo(item.itemid).armor
                                        if getItemInfo(item.itemid).armor > 0 then
                                            doItemSetAttribute(item.uid, "armor",arm + 1)
                                        elseif getItemInfo(item.itemid).attack > 0 then
                                            doItemSetAttribute(item.uid, "attack",atk + 1)
                                        elseif getItemInfo(item.itemid).defense > 0 and getItemInfo(item.itemid).attack <= 0 then
                                            doItemSetAttribute(item.uid, "defense",def + 1) 
                                        end                                      
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end
    return true
end

function onLogin(cid)
    registerCreatureEvent(cid, "Item level")
    return true
end

 

Gostaria que não conflitasse com outro script que tenho, que muda a descrição também. É um script que adiciona reflet ao equipamento, ficando: You see a brass armor ref 2% (arm: 8).
Dai com esse script, ficaria: You see a brass armor +1 ref 2% (arm: 9).

Agradeço desde já.


function getItemExp(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "exp") or 0
    end
    return false
end
function getItemLevel(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "level") or 0
    end
    return false
end
function doItemAddExp(item)
    if item.itemid > 0 then
        return doItemSetAttribute(item.uid, "exp", getItemExp(item) + 1)
    end
    return false
end
function doItemAddLevel(item, count)
    if item.itemid > 0 and tonumber(count) then
        return doItemSetAttribute(item.uid, "level", getItemLevel(item) + count)
    end
    return false
end
local table_of_slots = {"head", "body", "legs", "feet", "hands"}  --Slots. Ex.: {"head", "body"}
local min_exp = 500 -- Exp mínima para o monstro valer (exp que fica no monster.xml)
local exp_levels = {2, 4, 6, 180, 280, 400, 550, 700, 900, 1500} -- Exp pra upar. A cada vez que um item atigingir um desses valores de exp, ele upa 1 lvl. (Tem 10, ou seja, nível máximo do item = 10) Pode por mais leveis se quiser.
local slots = {
    ["head"] = 1, 
    ["body"] = 4,
    ["legs"] = 7,
    ["feet"] = 8,
    ["hands"] = {5, 6},
}
function onKill(cid, target, lastHit)   
    
    local tab = {}
    
    if isPlayer(cid) and isMonster(target) then
        if getMonsterInfo(getCreatureName(target)).experience >= min_exp then
            if #table_of_slots > 0 then
                for a, b in pairs(table_of_slots) do
                    if slots then
                        if type(slots) == "table" then
                            for i = 1, #slots do
                                local tb = slots
                                table.insert(tab, tb)
                            end
                        else
                            table.insert(tab, slots)
                        end
                    end
                end
            end
            if #tab > 0 then
                for i = 1, #tab do
                    local item = getPlayerSlotItem(cid, tab)
                    if item.uid > 0 then
                        doItem                AddExp(item)
                        if getItemLevel(item) then
                            if isInArray(exp_levels, getItemExp(item)) then
                                if getItemInfo(item.itemid).attack > 0 or getItemInfo(item.itemid).defense > 0 or getItemInfo(item.itemid).armor > 0 then
                                    if getItemLevel(item) ~= #exp_levels then
                                        doItemAddLevel(item, 1)

                                         doItemSetAttribute(item.uid, "name", getItemName(item.uid)..)                      
                                        doItemSetAttribute(item.uid, "name", getItemName(item.uid).." +"..getItemLevel(item))
                                        doSendMagicEffect(getThingPos(cid), 28)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Seu "..getItemNameById(item.itemid).." atingiu "..getItemExp(item).."exp e ganhou 1 level! Agora ele esta level "..getItemLevel(item))
                                        local atk = getItemAttribute(item.uid, "attack") or getItemInfo(item.itemid).attack
                                        local def = getItemAttribute(item.uid, "defense") or getItemInfo(item.itemid).defense
                                        local arm = getItemAttribute(item.uid, "armor") or getItemInfo(item.itemid).armor
                                        if getItemInfo(item.itemid).armor > 0 then
                                            doItemSetAttribute(item.uid, "armor",arm + 1)
                                        elseif getItemInfo(item.itemid).attack > 0 then
                                            doItemSetAttribute(item.uid, "attack",atk + 1)
                                        elseif getItemInfo(item.itemid).defense > 0 and getItemInfo(item.itemid).attack <= 0 then
                                            doItemSetAttribute(item.uid, "defense",def + 1) 
                                        end                                      
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end
    return true
end

function onLogin(cid)
    registerCreatureEvent(cid, "Item level")
    return true
end

Link para o post
Compartilhar em outros sites

 

3 horas atrás, Gustavo Ntos disse:

 


function getItemExp(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "exp") or 0
    end
    return false
end
function getItemLevel(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "level") or 0
    end
    return false
end
function doItemAddExp(item)
    if item.itemid > 0 then
        return doItemSetAttribute(item.uid, "exp", getItemExp(item) + 1)
    end
    return false
end
function doItemAddLevel(item, count)
    if item.itemid > 0 and tonumber(count) then
        return doItemSetAttribute(item.uid, "level", getItemLevel(item) + count)
    end
    return false
end
local table_of_slots = {"head", "body", "legs", "feet", "hands"}  --Slots. Ex.: {"head", "body"}
local min_exp = 500 -- Exp mínima para o monstro valer (exp que fica no monster.xml)
local exp_levels = {2, 4, 6, 180, 280, 400, 550, 700, 900, 1500} -- Exp pra upar. A cada vez que um item atigingir um desses valores de exp, ele upa 1 lvl. (Tem 10, ou seja, nível máximo do item = 10) Pode por mais leveis se quiser.
local slots = {
    ["head"] = 1, 
    ["body"] = 4,
    ["legs"] = 7,
    ["feet"] = 8,
    ["hands"] = {5, 6},
}
function onKill(cid, target, lastHit)   
    
    local tab = {}
    
    if isPlayer(cid) and isMonster(target) then
        if getMonsterInfo(getCreatureName(target)).experience >= min_exp then
            if #table_of_slots > 0 then
                for a, b in pairs(table_of_slots) do
                    if slots then
                        if type(slots) == "table" then
                            for i = 1, #slots do
                                local tb = slots
                                table.insert(tab, tb)
                            end
                        else
                            table.insert(tab, slots)
                        end
                    end
                end
            end
            if #tab > 0 then
                for i = 1, #tab do
                    local item = getPlayerSlotItem(cid, tab)
                    if item.uid > 0 then
                        doItem                AddExp(item)
                        if getItemLevel(item) then
                            if isInArray(exp_levels, getItemExp(item)) then
                                if getItemInfo(item.itemid).attack > 0 or getItemInfo(item.itemid).defense > 0 or getItemInfo(item.itemid).armor > 0 then
                                    if getItemLevel(item) ~= #exp_levels then
                                        doItemAddLevel(item, 1)

                                         doItemSetAttribute(item.uid, "name", getItemName(item.uid)..)                      
                                        doItemSetAttribute(item.uid, "name", getItemName(item.uid).." +"..getItemLevel(item))
                                        doSendMagicEffect(getThingPos(cid), 28)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Seu "..getItemNameById(item.itemid).." atingiu "..getItemExp(item).."exp e ganhou 1 level! Agora ele esta level "..getItemLevel(item))
                                        local atk = getItemAttribute(item.uid, "attack") or getItemInfo(item.itemid).attack
                                        local def = getItemAttribute(item.uid, "defense") or getItemInfo(item.itemid).defense
                                        local arm = getItemAttribute(item.uid, "armor") or getItemInfo(item.itemid).armor
                                        if getItemInfo(item.itemid).armor > 0 then
                                            doItemSetAttribute(item.uid, "armor",arm + 1)
                                        elseif getItemInfo(item.itemid).attack > 0 then
                                            doItemSetAttribute(item.uid, "attack",atk + 1)
                                        elseif getItemInfo(item.itemid).defense > 0 and getItemInfo(item.itemid).attack <= 0 then
                                            doItemSetAttribute(item.uid, "defense",def + 1) 
                                        end                                      
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end
    return true
end

function onLogin(cid)
    registerCreatureEvent(cid, "Item level")
    return true
end

 

 

Não deu certo, cara. Não dá nenhum erro, mas o script não funciona.

Link para o post
Compartilhar em outros sites
Agora, gabriel28 disse:

up



function getItemExp(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "exp") or 0
    end
    return false
end
function getItemLevel(item)
    if item.itemid > 0 then
        return getItemAttribute(item.uid, "level") or 0
    end
    return false
end
function doItemAddExp(item)
    if item.itemid > 0 then
        return doItemSetAttribute(item.uid, "exp", getItemExp(item) + 1)
    end
    return false
end
function doItemAddLevel(item, count)
    if item.itemid > 0 and tonumber(count) then
        return doItemSetAttribute(item.uid, "level", getItemLevel(item) + count)
    end
    return false
end
local table_of_slots = {"head", "body", "legs", "feet", "hands"}  --Slots. Ex.: {"head", "body"}
local min_exp = 500 -- Exp mínima para o monstro valer (exp que fica no monster.xml)
local exp_levels = {2, 4, 6, 180, 280, 400, 550, 700, 900, 1500} -- Exp pra upar. A cada vez que um item atigingir um desses valores de exp, ele upa 1 lvl. (Tem 10, ou seja, nível máximo do item = 10) Pode por mais leveis se quiser.
local slots = {
    ["head"] = 1, 
    ["body"] = 4,
    ["legs"] = 7,
    ["feet"] = 8,
    ["hands"] = {5, 6},
}
function onKill(cid, target, lastHit)   
    
    local tab = {}
    
    if isPlayer(cid) and isMonster(target) then
        if getMonsterInfo(getCreatureName(target)).experience >= min_exp then
            if #table_of_slots > 0 then
                for a, b in pairs(table_of_slots) do
                    if slots then
                        if type(slots) == "table" then
                            for i = 1, #slots do
                                local tb = slots
                                table.insert(tab, tb)
                            end
                        else
                            table.insert(tab, slots)
                        end
                    end
                end
            end
            if #tab > 0 then
                for i = 1, #tab do
                    local item = getPlayerSlotItem(cid, tab)
                    if item.uid > 0 then
                        doItem                AddExp(item)
                        if getItemLevel(item) then
                            if isInArray(exp_levels, getItemExp(item)) then
                                if getItemInfo(item.itemid).attack > 0 or getItemInfo(item.itemid).defense > 0 or getItemInfo(item.itemid).armor > 0 then
                                    if getItemLevel(item) ~= #exp_levels then
                                        doItemAddLevel(item, 1)

                                         doItemSetAttribute(item.uid, "name", getItemName(item.uid))                      
                                        doItemSetAttribute(item.uid, "name", getItemName(item.uid).." +"..getItemLevel(item))
                                        doSendMagicEffect(getThingPos(cid), 28)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Seu "..getItemNameById(item.itemid).." atingiu "..getItemExp(item).."exp e ganhou 1 level! Agora ele esta level "..getItemLevel(item))
                                        local atk = getItemAttribute(item.uid, "attack") or getItemInfo(item.itemid).attack
                                        local def = getItemAttribute(item.uid, "defense") or getItemInfo(item.itemid).defense
                                        local arm = getItemAttribute(item.uid, "armor") or getItemInfo(item.itemid).armor
                                        if getItemInfo(item.itemid).armor > 0 then
                                            doItemSetAttribute(item.uid, "armor",arm + 1)
                                        elseif getItemInfo(item.itemid).attack > 0 then
                                            doItemSetAttribute(item.uid, "attack",atk + 1)
                                        elseif getItemInfo(item.itemid).defense > 0 and getItemInfo(item.itemid).attack <= 0 then
                                            doItemSetAttribute(item.uid, "defense",def + 1) 
                                        end                                      
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end
    return true
end

function onLogin(cid)
    registerCreatureEvent(cid, "Item level")
    return true
end

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.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo