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
 

Mostrar mais  

 

  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
 

Mostrar mais  

 

01.png

Link para o post
Compartilhar em outros sites
  Em 22/05/2023 em 22:02, Doidodepeda disse:

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

Tfs 0.4 8.60

 

 

 

01.png

Mostrar mais  

 

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
  Em 23/05/2023 em 04:45, 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

 

Mostrar mais  

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
  Em 23/05/2023 em 06:14, dgx disse:

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

 

Mostrar mais  

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

  Em 23/05/2023 em 04:45, 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

 

Mostrar mais  

Nao resolveu, esta dando esse erro...

02.png

Link para o post
Compartilhar em outros sites
  Em 23/05/2023 em 12:07, Doidodepeda disse:

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

Nao resolveu, esta dando esse erro...

02.png

Mostrar mais  

 

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
  Em 23/05/2023 em 17:03, 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

 

Mostrar mais  

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
  Em 24/05/2023 em 04:13, dgx disse:

agora vc precisa add o action dos pot ;

 

Mostrar mais  

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
  Em 24/05/2023 em 12:09, 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 !

Mostrar mais  

 

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
  Em 24/05/2023 em 20:42, 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 ! 

Expand   Mostrar mais  

 

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 Under
      Apresentando o Tibia-IA: A IA para Desenvolvimento de Servidores Tibia! 
       O que é o Tibia-IA?
      Um modelo de IA especializado para Tibia! Ele está atualmente em teste gratuito, e eu adoraria que vocês o experimentassem. Basta acessar https://ai.tibiaking.com, criar uma conta e começar a usar totalmente de graça! 
       Versão Experimental Fechada
      Atualmente, algumas funcionalidades ainda estão em desenvolvimento. No momento, apenas a geração de scripts está disponível para o público.
      Se encontrarem qualquer problema nos scripts gerados, me avisem! Vamos juntos construir a IA mais poderosa para ajudar no desenvolvimento de servidores Tibia!  
      Contato direto discord : underewar
       Acesse agora: https://ai.tibiaking.com
       Como funciona?
       Geração automática de scripts LUA para TFS  Suporte a diferentes eventos, criaturas, NPCs, magias, etc.  Ferramenta em constante evolução para aprimorar o desenvolvimento Novidades em breve confira no site. O acesso ao Tibia-IA está disponível para testes GRATUITOS! 
      Basta criar uma conta em: https://ai.tibiaking.com
      Utilize a IA para gerar seus scripts de forma simples e rápida
      Envie feedbacks para ajudarmos a tornar a ferramenta ainda melhor!

      Problemas relatar diretamente no meu discord pessoal : underewar
       
       
    • 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. 
       
  • Estatísticas dos Fóruns

    96833
    Tópicos
    519574
    Posts
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo