Ir para conteúdo

Featured Replies

Postado
  • Autor
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)

  • Respostas 9
  • Visualizações 398
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Mask Ghoul
    Mask Ghoul

    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},

Posted Images

Postado
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 ;

 

Postado
  • Autor
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 !

Postado
  • 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 😛

Postado
  • Autor
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 ! 

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo