Ir para conteúdo
  • Cadastre-se

Suporte Error no script


Ir para solução Resolvido por Mask Ghoul,

Posts Recomendados

Alguem poderia me ajudar a concertar esse script para que funcione corretamente pf ?

Tfs 0.4 8.60

 

Citar

function onUse(cid, item, fromPosition, itemEx, toPosition)
    return expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
end
 

 

Citar

local potions = {
    [6542] = {needLevel = 1500, rate = 1.2, duration = 1800},
    [6543] = {needLevel = 2000, rate = 1.4, duration = 1800},
    [6544] = {needLevel = 2500, rate = 1.6, duration = 1800},
    [6545] = {needLevel = 3000, rate = 1.8, duration = 1800},
    [2328] = {needLevel = 4500, rate = 2.4, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Voce precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    local expData = self.playerData[guid][itemId]
    if not expData then
        -- caso alguma nova exp potion seja adicionada as configurações em tempo real
        -- alguns jogadores online que tentarem usar, precisarao relogar.
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'E necessario relogar para atualizar.')
        return true
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bonus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora voce tem +%d%% de experiencia por %s.'):format(
        potion.rate * 100, string.diff(potion.duration, true)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = {}
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = {rate = 0, duration = 0}
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Eggs Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end
 

 

01.png

Link para o post
Compartilhar em outros sites
6 horas atrás, Doidodepeda disse:

Alguem poderia me ajudar a concertar esse script para que funcione corretamente pf ?

Tfs 0.4 8.60

 

 

 

01.png

 

local potions = {
    [6542] = {needLevel = 1500, rate = 1.2, duration = 1800},
    [6543] = {needLevel = 2000, rate = 1.4, duration = 1800},
    [6544] = {needLevel = 2500, rate = 1.6, duration = 1800},
    [6545] = {needLevel = 3000, rate = 1.8, duration = 1800},
    [2328] = {needLevel = 4500, rate = 2.4, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    self.playerData[guid] = self.playerData[guid] or {} -- Verifica se já existe uma tabela para esse jogador
    local expData = self.playerData[guid][itemId]
    if not expData then
        self.playerData[guid][itemId] = {rate = 0, duration = 0} -- Inicializa os dados da poção para o jogador
        expData = self.playerData[guid][itemId] -- Atualiza a referência para os dados da poção
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, string.diff(potion.duration, true)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = self.playerData[guid] or {} -- Verifica se já existe uma tabela para esse jogador
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = self.playerData[guid][itemId] or {rate = 0, duration = 0} -- Inicializa os dados das poções para o jogador
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Eggs Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

 

Link para o post
Compartilhar em outros sites
1 hora atrás, Mask Ghoul disse:

 


local potions = {
    [6542] = {needLevel = 1500, rate = 1.2, duration = 1800},
    [6543] = {needLevel = 2000, rate = 1.4, duration = 1800},
    [6544] = {needLevel = 2500, rate = 1.6, duration = 1800},
    [6545] = {needLevel = 3000, rate = 1.8, duration = 1800},
    [2328] = {needLevel = 4500, rate = 2.4, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    self.playerData[guid] = self.playerData[guid] or {} -- Verifica se já existe uma tabela para esse jogador
    local expData = self.playerData[guid][itemId]
    if not expData then
        self.playerData[guid][itemId] = {rate = 0, duration = 0} -- Inicializa os dados da poção para o jogador
        expData = self.playerData[guid][itemId] -- Atualiza a referência para os dados da poção
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, string.diff(potion.duration, true)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = self.playerData[guid] or {} -- Verifica se já existe uma tabela para esse jogador
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = self.playerData[guid][itemId] or {rate = 0, duration = 0} -- Inicializa os dados das poções para o jogador
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Eggs Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

 

esse codigo ele nao e no actions ele e na pasta lib. por isso esse erro esta acontecendo

 

Link para o post
Compartilhar em outros sites
5 horas atrás, dgx disse:

esse codigo ele nao e no actions ele e na pasta lib. por isso esse erro esta acontecendo

 

Eu sei amigo, ele está na pasta Lib, porem esta dando o erro acima. 

7 horas atrás, Mask Ghoul disse:

 


local potions = {
    [6542] = {needLevel = 1500, rate = 1.2, duration = 1800},
    [6543] = {needLevel = 2000, rate = 1.4, duration = 1800},
    [6544] = {needLevel = 2500, rate = 1.6, duration = 1800},
    [6545] = {needLevel = 3000, rate = 1.8, duration = 1800},
    [2328] = {needLevel = 4500, rate = 2.4, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    self.playerData[guid] = self.playerData[guid] or {} -- Verifica se já existe uma tabela para esse jogador
    local expData = self.playerData[guid][itemId]
    if not expData then
        self.playerData[guid][itemId] = {rate = 0, duration = 0} -- Inicializa os dados da poção para o jogador
        expData = self.playerData[guid][itemId] -- Atualiza a referência para os dados da poção
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, string.diff(potion.duration, true)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = self.playerData[guid] or {} -- Verifica se já existe uma tabela para esse jogador
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = self.playerData[guid][itemId] or {rate = 0, duration = 0} -- Inicializa os dados das poções para o jogador
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Eggs Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

 

Nao resolveu, esta dando esse erro...

02.png

Link para o post
Compartilhar em outros sites
4 horas atrás, Doidodepeda disse:

Eu sei amigo, ele está na pasta Lib, porem esta dando o erro acima. 

Nao resolveu, esta dando esse erro...

02.png

 

local potions = {
    [6542] = {needLevel = 1500, rate = 1.2, duration = 1800},
    [6543] = {needLevel = 2000, rate = 1.4, duration = 1800},
    [6544] = {needLevel = 2500, rate = 1.6, duration = 1800},
    [6545] = {needLevel = 3000, rate = 1.8, duration = 1800},
    [2328] = {needLevel = 4500, rate = 2.4, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function getTimeString(duration)
    local seconds = duration % 60
    local minutes = math.floor((duration / 60) % 60)
    local hours = math.floor((duration / 3600) % 24)
    local days = math.floor(duration / 86400)

    local timeString = ""
    if days > 0 then
        timeString = timeString .. days .. " dia(s) "
    end
    if hours > 0 then
        timeString = timeString .. hours .. " hora(s) "
    end
    if minutes > 0 then
        timeString = timeString .. minutes .. " minuto(s) "
    end
    timeString = timeString .. seconds .. " segundo(s)"

    return timeString
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    self.playerData[guid] = self.playerData[guid] or {}
    local expData = self.playerData[guid][itemId]
    if not expData then
        self.playerData[guid][itemId] = {rate = 0, duration = 0}
        expData = self.playerData[guid][itemId]
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, getTimeString(potion.duration)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = self.playerData[guid] or {}
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = self.playerData[guid][itemId] or {rate = 0, duration = 0}
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Eggs Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

 

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

 



local potions = {
    [6542] = {needLevel = 1500, rate = 1.2, duration = 1800},
    [6543] = {needLevel = 2000, rate = 1.4, duration = 1800},
    [6544] = {needLevel = 2500, rate = 1.6, duration = 1800},
    [6545] = {needLevel = 3000, rate = 1.8, duration = 1800},
    [2328] = {needLevel = 4500, rate = 2.4, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function getTimeString(duration)
    local seconds = duration % 60
    local minutes = math.floor((duration / 60) % 60)
    local hours = math.floor((duration / 3600) % 24)
    local days = math.floor(duration / 86400)

    local timeString = ""
    if days > 0 then
        timeString = timeString .. days .. " dia(s) "
    end
    if hours > 0 then
        timeString = timeString .. hours .. " hora(s) "
    end
    if minutes > 0 then
        timeString = timeString .. minutes .. " minuto(s) "
    end
    timeString = timeString .. seconds .. " segundo(s)"

    return timeString
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    self.playerData[guid] = self.playerData[guid] or {}
    local expData = self.playerData[guid][itemId]
    if not expData then
        self.playerData[guid][itemId] = {rate = 0, duration = 0}
        expData = self.playerData[guid][itemId]
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, getTimeString(potion.duration)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = self.playerData[guid] or {}
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = self.playerData[guid][itemId] or {rate = 0, duration = 0}
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Eggs Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

 

Muuuitooo obrigado guerreiro, o error citado desapareceu, porem a exp nao esta sendo adiconada, nao adiciona o bonus de EXP. Teria como ajudar nisso ?

Editado por Doidodepeda (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
8 horas atrás, Doidodepeda disse:

Muuuitooo obrigado guerreiro, o error citado desapareceu, porem a exp nao esta sendo adiconada, nao adiciona o bonus de EXP. Teria como ajudar nisso ?

agora vc precisa add o action dos pot ;

 

Link para o post
Compartilhar em outros sites
7 horas atrás, dgx disse:

agora vc precisa add o action dos pot ;

 

Ja esta meu amigo, o sistema ja esta todo instalado, porem nao esta funcionando o ganho de EXP, como citei acima !
Eu uso a potion normalmente mas nao ganha o bonus de EXP. Aguardando pra ve se alguem ajuda !

Link para o post
Compartilhar em outros sites
  • Solução
8 horas atrás, Doidodepeda disse:

Ja esta meu amigo, o sistema ja esta todo instalado, porem nao esta funcionando o ganho de EXP, como citei acima !
Eu uso a potion normalmente mas nao ganha o bonus de EXP. Aguardando pra ve se alguem ajuda !

 

local potions = {
    [6542] = {needLevel = 100, rate = 2.0, duration = 1800},
    [6543] = {needLevel = 100, rate = 3.0, duration = 1800},
    [6544] = {needLevel = 100, rate = 4.0, duration = 1800},
    [6545] = {needLevel = 100, rate = 5.0, duration = 1800},
    [2328] = {needLevel = 100, rate = 6.0, duration = 1800}
}

if not expPotions then
    expPotions = {playerData = {}}
end

function getTimeString(duration)
    local seconds = duration % 60
    local minutes = math.floor((duration / 60) % 60)
    local hours = math.floor((duration / 3600) % 24)
    local days = math.floor(duration / 86400)

    local timeString = ""
    if days > 0 then
        timeString = timeString .. days .. " dia(s) "
    end
    if hours > 0 then
        timeString = timeString .. hours .. " hora(s) "
    end
    if minutes > 0 then
        timeString = timeString .. minutes .. " minuto(s) "
    end
    timeString = timeString .. seconds .. " segundo(s)"

    return timeString
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    self.playerData[guid] = self.playerData[guid] or {}
    local expData = self.playerData[guid][itemId]
    if not expData then
        self.playerData[guid][itemId] = {rate = 0, duration = 0}
        expData = self.playerData[guid][itemId]
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, ('[Egg Exp (Combo)] Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, getTimeString(potion.duration)
    ))

    doPlayerSetRate(cid, SKILL__LEVEL, expData.rate) -- Aplica o bônus de experiência
    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = self.playerData[guid] or {}
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = self.playerData[guid][itemId] or {rate = 0, duration = 0}
    end
    return true
end

function expPotions:onLogout(cid)
    local guid = getPlayerGUID(cid)
    local playerData = self.playerData[guid]
    if playerData then
        for itemId, expData in pairs(playerData) do
            doPlayerSetRate(cid, SKILL__LEVEL, 1) -- o bônus de experiência para 1
        end
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Combos de Eggs de Experiência:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            local itemName = getItemNameById(itemId)
            str = str .. ('\n%s - %d%%'):format(itemName, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

 

 

Resolvido 😛

Link para o post
Compartilhar em outros sites
2 minutos atrás, Mask Ghoul disse:

 


local potions = {
    [6542] = {needLevel = 100, rate = 2.0, duration = 1800},
    [6543] = {needLevel = 100, rate = 3.0, duration = 1800},
    [6544] = {needLevel = 100, rate = 4.0, duration = 1800},
    [6545] = {needLevel = 100, rate = 5.0, duration = 1800},
    [2328] = {needLevel = 100, rate = 6.0, duration = 1800}
}

if not expPotions then
    expPotions = {playerData = {}}
end

function getTimeString(duration)
    local seconds = duration % 60
    local minutes = math.floor((duration / 60) % 60)
    local hours = math.floor((duration / 3600) % 24)
    local days = math.floor(duration / 86400)

    local timeString = ""
    if days > 0 then
        timeString = timeString .. days .. " dia(s) "
    end
    if hours > 0 then
        timeString = timeString .. hours .. " hora(s) "
    end
    if minutes > 0 then
        timeString = timeString .. minutes .. " minuto(s) "
    end
    timeString = timeString .. seconds .. " segundo(s)"

    return timeString
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar este Egg.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    self.playerData[guid] = self.playerData[guid] or {}
    local expData = self.playerData[guid][itemId]
    if not expData then
        self.playerData[guid][itemId] = {rate = 0, duration = 0}
        expData = self.playerData[guid][itemId]
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, ('[Egg Exp (Combo)] Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, getTimeString(potion.duration)
    ))

    doPlayerSetRate(cid, SKILL__LEVEL, expData.rate) -- Aplica o bônus de experiência
    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = self.playerData[guid] or {}
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = self.playerData[guid][itemId] or {rate = 0, duration = 0}
    end
    return true
end

function expPotions:onLogout(cid)
    local guid = getPlayerGUID(cid)
    local playerData = self.playerData[guid]
    if playerData then
        for itemId, expData in pairs(playerData) do
            doPlayerSetRate(cid, SKILL__LEVEL, 1) -- o bônus de experiência para 1
        end
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Combos de Eggs de Experiência:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            local itemName = getItemNameById(itemId)
            str = str .. ('\n%s - %d%%'):format(itemName, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

 

 

Trabalho perfeito !
muito obrigado mano ! 

 

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 braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo