Ir para conteúdo
  • Cadastre-se

Suporte Ajuda com sistema de Reset via NPC


Posts Recomendados

.Qual servidor ou website você utiliza como base? 

TFS 0.4

 

Bom dia pessoal, gostaria de saber se existe alguma forma de modificar esse script para que ele tambem aumente o dano alem do HP/MP a cada reset.

 

Spoiler

local config = {
    minlevel = 500, --- level inical para resetar
    price = 100000000, --- preço inicial para resetar
    newlevel = 20, --- level após reset
    priceByReset = 100000000, --- preço acrescentado por reset
    percent = 10, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
    maxresets = 20,
    levelbyreset = 100 --- quanto de level vai precisar a mais no próximo reset
}
--- end config

function getResets(uid)
    resets = getPlayerStorageValue(uid, 378378)
    if resets < 0 then
        resets = 0
    end
    return resets
end

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                  npcHandler:onThink()                  end
 
function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    function addReset(cid)
        if(npcHandler:isFocused(cid)) then
            npcHandler:releaseFocus(cid)
        end
        
        talkState[talkUser] = 0
        resets = getResets(cid)
        setPlayerStorageValue(cid, 378378, resets+1) 
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
        local hp = getCreatureMaxHealth(cid)
        local resethp = hp*(config.percent/100)
        setCreatureMaxHealth(cid, resethp)
        local differencehp = (hp - resethp)
        doCreatureAddHealth(cid, -differencehp)
        local mana = getCreatureMaxMana(cid)
        local resetmana = mana*(config.percent/100)
        setCreatureMaxMana(cid, resetmana)
        local differencemana = (mana - resetmana)
        doCreatureAddMana(cid, -differencemana)
        doRemoveCreature(cid)        
        local description = resets+1
        db.query("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."")
        db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
        return true
    end
    
    local newPrice = config.price + (getResets(cid) * config.priceByReset)
    local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)

    if msgcontains(msg, 'reset') then
        if getResets(cid) < config.maxresets then
            selfSay('Voce gostaria de resetar? Isso vai custar '..newPrice..' gp\'s!', cid)
            talkState[talkUser] = 1
        else
            selfSay('Voce ja atingiu o nivel maximo de resets!', cid)
        end
        
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if getPlayerMoney(cid) < newPrice then
            selfSay('E necessesario ter '..newPrice..' gp\'s para resetar!', cid)
        elseif getPlayerLevel(cid) < newminlevel then
            selfSay('O level minimo para resetar e '..newminlevel..'!', cid)
        else
            doPlayerRemoveMoney(cid,newPrice)
            playerid = getPlayerGUID(cid)
            addEvent(function()
                if isPlayer(cid) then
                    addReset(cid)
                end
            end, 3000)
            local number = getResets(cid)+1
            local msg ="---[Reset: "..number.."]-- Voce resetou!  Voce sera disconectado em 3 segundos."
            doPlayerPopupFYI(cid, msg) 
            talkState[talkUser] = 0
            npcHandler:releaseFocus(cid)
        end
        talkState[talkUser] = 0
    elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
        talkState[talkUser] = 0
        npcHandler:releaseFocus(cid)
        selfSay('Ok.', cid)
    elseif msgcontains(msg, 'quantity') then
        selfSay('You have a total of '..getResets(cid)..' reset(s).', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por A.Mokk (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local config = {
    minlevel = 500,
    price = 100000000,
    newlevel = 20,
    priceByReset = 100000000,
    percent = 10,
    maxresets = 20,
    levelbyreset = 100,
    damagePercent = 5, -- Porcentagem de dano adicional após cada resets
}

function getResets(uid)
    resets = getPlayerStorageValue(uid, 378378)
    if resets < 0 then
        resets = 0
    end
    return resets
end

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    function addReset(cid)
        if npcHandler:isFocused(cid) then
            npcHandler:releaseFocus(cid)
        end

        talkState[talkUser] = 0
        resets = getResets(cid)
        setPlayerStorageValue(cid, 378378, resets + 1)
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

        -- Ajustar HP
        local hp = getCreatureMaxHealth(cid)
        local resethp = hp * (config.percent / 100)
        setCreatureMaxHealth(cid, resethp)
        local differencehp = hp - resethp
        doCreatureAddHealth(cid, -differencehp)

        -- Ajustar MP
        local mana = getCreatureMaxMana(cid)
        local resetmana = mana * (config.percent / 100)
        setCreatureMaxMana(cid, resetmana)
        local differencemana = mana - resetmana
        doCreatureAddMana(cid, -differencemana)

        -- Ajustar dano
        local damage = getCreatureDamage(cid)
        local additionalDamage = damage * (config.damagePercent / 100)
        local newDamage = damage + additionalDamage
        setCreatureDamage(cid, newDamage)

        doRemoveCreature(cid)

        local description = resets + 1
        db.query("UPDATE `players` SET `description` = ' [Reset: " .. description .. "]' WHERE `players`.`id`= " .. playerid .. "")
        db.query("UPDATE `players` SET `level`=" .. config.newlevel .. ",`experience`= 0 WHERE `players`.`id`= " .. playerid .. "")
        return true
    end

    local newPrice = config.price + (getResets(cid) * config.priceByReset)
    local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)

    if msgcontains(msg, 'reset') then
        if getResets(cid) < config.maxresets then
            selfSay('Voce gostaria de resetar? Isso vai custar ' .. newPrice .. " gp's!", cid)
            talkState[talkUser] = 1
        else
            selfSay('Voce ja atingiu o nivel maximo de resets!', cid)
        end

    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if getPlayerMoney(cid) < newPrice then
            selfSay('E necessario ter ' .. newPrice .. " gp's para resetar!", cid)
        elseif getPlayerLevel(cid) < newminlevel then
            selfSay('O level minimo para resetar e ' .. newminlevel .. '!', cid)
        else
            doPlayerRemoveMoney(cid, newPrice)
            playerid = getPlayerGUID(cid)
            addEvent(function()
                if isPlayer(cid) then
                    addReset(cid)
                end
            end, 3000)
            local number = getResets(cid) + 1
            local msg = "---[Reset: " .. number .. "]-- Voce resetou! Voce ganhou " .. config.damagePercent .. "% de dano adicional. Voce sera desconectado em 3 segundos."
            doPlayerPopupFYI(cid, msg)
            talkState[talkUser] = 0
            npcHandler:releaseFocus(cid)
        end
        talkState[talkUser] = 0
    elseif (msgcontains(msg, 'no')) and isInArray({ 1 }, talkState[talkUser]) == TRUE then
        talkState[talkUser] = 0
        npcHandler:releaseFocus(cid)
        selfSay('Ok.', cid)
    elseif msgcontains(msg, 'quantity') then
        selfSay('You have a total of ' .. getResets(cid) .. ' reset(s).', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

nao testado!!

 

Se não funcionar, você pode tentar outro aqui

https://tibiaking.com/forums/topic/111239-reset-system-otx-2/?tab=comments#comment-573067

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

local config = {
    minlevel = 500,
    price = 100000000,
    newlevel = 20,
    priceByReset = 100000000,
    percent = 10,
    maxresets = 20,
    levelbyreset = 100,
    damagePercent = 5, -- Porcentagem de dano adicional após cada resets
}

function getResets(uid)
    resets = getPlayerStorageValue(uid, 378378)
    if resets < 0 then
        resets = 0
    end
    return resets
end

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    function addReset(cid)
        if npcHandler:isFocused(cid) then
            npcHandler:releaseFocus(cid)
        end

        talkState[talkUser] = 0
        resets = getResets(cid)
        setPlayerStorageValue(cid, 378378, resets + 1)
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

        -- Ajustar HP
        local hp = getCreatureMaxHealth(cid)
        local resethp = hp * (config.percent / 100)
        setCreatureMaxHealth(cid, resethp)
        local differencehp = hp - resethp
        doCreatureAddHealth(cid, -differencehp)

        -- Ajustar MP
        local mana = getCreatureMaxMana(cid)
        local resetmana = mana * (config.percent / 100)
        setCreatureMaxMana(cid, resetmana)
        local differencemana = mana - resetmana
        doCreatureAddMana(cid, -differencemana)

        -- Ajustar dano
        local damage = getCreatureDamage(cid)
        local additionalDamage = damage * (config.damagePercent / 100)
        local newDamage = damage + additionalDamage
        setCreatureDamage(cid, newDamage)

        doRemoveCreature(cid)

        local description = resets + 1
        db.query("UPDATE `players` SET `description` = ' [Reset: " .. description .. "]' WHERE `players`.`id`= " .. playerid .. "")
        db.query("UPDATE `players` SET `level`=" .. config.newlevel .. ",`experience`= 0 WHERE `players`.`id`= " .. playerid .. "")
        return true
    end

    local newPrice = config.price + (getResets(cid) * config.priceByReset)
    local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)

    if msgcontains(msg, 'reset') then
        if getResets(cid) < config.maxresets then
            selfSay('Voce gostaria de resetar? Isso vai custar ' .. newPrice .. " gp's!", cid)
            talkState[talkUser] = 1
        else
            selfSay('Voce ja atingiu o nivel maximo de resets!', cid)
        end

    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if getPlayerMoney(cid) < newPrice then
            selfSay('E necessario ter ' .. newPrice .. " gp's para resetar!", cid)
        elseif getPlayerLevel(cid) < newminlevel then
            selfSay('O level minimo para resetar e ' .. newminlevel .. '!', cid)
        else
            doPlayerRemoveMoney(cid, newPrice)
            playerid = getPlayerGUID(cid)
            addEvent(function()
                if isPlayer(cid) then
                    addReset(cid)
                end
            end, 3000)
            local number = getResets(cid) + 1
            local msg = "---[Reset: " .. number .. "]-- Voce resetou! Voce ganhou " .. config.damagePercent .. "% de dano adicional. Voce sera desconectado em 3 segundos."
            doPlayerPopupFYI(cid, msg)
            talkState[talkUser] = 0
            npcHandler:releaseFocus(cid)
        end
        talkState[talkUser] = 0
    elseif (msgcontains(msg, 'no')) and isInArray({ 1 }, talkState[talkUser]) == TRUE then
        talkState[talkUser] = 0
        npcHandler:releaseFocus(cid)
        selfSay('Ok.', cid)
    elseif msgcontains(msg, 'quantity') then
        selfSay('You have a total of ' .. getResets(cid) .. ' reset(s).', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

nao testado!!

 

Se não funcionar, você pode tentar outro aqui

https://tibiaking.com/forums/topic/111239-reset-system-otx-2/?tab=comments#comment-573067

Sempre eficiente e prestativo, obrigado mano, irei testar e retorno aqui se funcionar direitinho !

Link para o post
Compartilhar em outros sites
22 horas atrás, GM Vortex disse:



local config = {
    minlevel = 500,
    price = 100000000,
    newlevel = 20,
    priceByReset = 100000000,
    percent = 10,
    maxresets = 20,
    levelbyreset = 100,
    damagePercent = 5, -- Porcentagem de dano adicional após cada resets
}

function getResets(uid)
    resets = getPlayerStorageValue(uid, 378378)
    if resets < 0 then
        resets = 0
    end
    return resets
end

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    function addReset(cid)
        if npcHandler:isFocused(cid) then
            npcHandler:releaseFocus(cid)
        end

        talkState[talkUser] = 0
        resets = getResets(cid)
        setPlayerStorageValue(cid, 378378, resets + 1)
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

        -- Ajustar HP
        local hp = getCreatureMaxHealth(cid)
        local resethp = hp * (config.percent / 100)
        setCreatureMaxHealth(cid, resethp)
        local differencehp = hp - resethp
        doCreatureAddHealth(cid, -differencehp)

        -- Ajustar MP
        local mana = getCreatureMaxMana(cid)
        local resetmana = mana * (config.percent / 100)
        setCreatureMaxMana(cid, resetmana)
        local differencemana = mana - resetmana
        doCreatureAddMana(cid, -differencemana)

        -- Ajustar dano
        local damage = getCreatureDamage(cid)
        local additionalDamage = damage * (config.damagePercent / 100)
        local newDamage = damage + additionalDamage
        setCreatureDamage(cid, newDamage)

        doRemoveCreature(cid)

        local description = resets + 1
        db.query("UPDATE `players` SET `description` = ' [Reset: " .. description .. "]' WHERE `players`.`id`= " .. playerid .. "")
        db.query("UPDATE `players` SET `level`=" .. config.newlevel .. ",`experience`= 0 WHERE `players`.`id`= " .. playerid .. "")
        return true
    end

    local newPrice = config.price + (getResets(cid) * config.priceByReset)
    local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)

    if msgcontains(msg, 'reset') then
        if getResets(cid) < config.maxresets then
            selfSay('Voce gostaria de resetar? Isso vai custar ' .. newPrice .. " gp's!", cid)
            talkState[talkUser] = 1
        else
            selfSay('Voce ja atingiu o nivel maximo de resets!', cid)
        end

    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if getPlayerMoney(cid) < newPrice then
            selfSay('E necessario ter ' .. newPrice .. " gp's para resetar!", cid)
        elseif getPlayerLevel(cid) < newminlevel then
            selfSay('O level minimo para resetar e ' .. newminlevel .. '!', cid)
        else
            doPlayerRemoveMoney(cid, newPrice)
            playerid = getPlayerGUID(cid)
            addEvent(function()
                if isPlayer(cid) then
                    addReset(cid)
                end
            end, 3000)
            local number = getResets(cid) + 1
            local msg = "---[Reset: " .. number .. "]-- Voce resetou! Voce ganhou " .. config.damagePercent .. "% de dano adicional. Voce sera desconectado em 3 segundos."
            doPlayerPopupFYI(cid, msg)
            talkState[talkUser] = 0
            npcHandler:releaseFocus(cid)
        end
        talkState[talkUser] = 0
    elseif (msgcontains(msg, 'no')) and isInArray({ 1 }, talkState[talkUser]) == TRUE then
        talkState[talkUser] = 0
        npcHandler:releaseFocus(cid)
        selfSay('Ok.', cid)
    elseif msgcontains(msg, 'quantity') then
        selfSay('You have a total of ' .. getResets(cid) .. ' reset(s).', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

nao testado!!

 

Se não funcionar, você pode tentar outro aqui

https://tibiaking.com/forums/topic/111239-reset-system-otx-2/?tab=comments#comment-573067

Acabei de testar aqui, ao tentar resetar ele nao desconectou como no NPC que mandei acima. Alem disso, o level se manteve mesmo resetando, o HP/MP resetou mas acho que nao acrescentou os 10%, ele abre uma caixa ao resetar falando que ganhou 5% a mais de dano mas tambem nao consegui notar essa diferença... Aparece um erro na distro ao tentar resetar

[9:49:37.586] [Error - NpcScript Interface]
[9:49:37.588] In a timer event called from:
[9:49:37.589] data/npc/scripts/reseter.lua:onCreatureSay
[9:49:37.590] Description:
[9:49:37.591] data/npc/scripts/reseter.lua:61: attempt to call global 'getCreatureDamage' (a nil value)
[9:49:37.595] stack traceback:
[9:49:37.596]   data/npc/scripts/reseter.lua:61: in function 'addReset'
[9:49:37.597]   data/npc/scripts/reseter.lua:95: in function <data/npc/scripts/reseter.lua:93>

O outro script nao da nenhum erro ao iniciar a distro, mas ao logar ele da o seguinte erro :

[10:6:56.230] [Error - CreatureScript Interface]
[10:6:56.233] data/creaturescripts/scripts/reset_system.lua:onLogin
[10:6:56.235] Description:
[10:6:56.238] data/lib/reset.lua:68: attempt to call global 'getPlayerResets' (a nil value)
[10:6:56.244] stack traceback:
[10:6:56.247]   data/lib/reset.lua:68: in function 'getCount'
[10:6:56.249]   data/lib/reset.lua:80: in function 'getInfo'
[10:6:56.255]   data/lib/reset.lua:84: in function 'addBonuses'
[10:6:56.259]   data/creaturescripts/scripts/reset_system.lua:2: in function <data/creaturescripts/scripts/reset_system.lua:1>


Com esse acima, nao to conseguindo logar nos char

EDIT 3#

Consegui abrir os char baixando a sua pasta de libs porem o erro de manter o level ainda continua, notei que ao resetar ele nao ta acrescentando a vida e a mana, o dano eu nem cheguei a testar pois ao abrir com a sua pasta libs, varias outras coisas do ot pararam de pegar dai nem deslogar eu conseguia mas consegui "dar o reset" apesar do level se manter o mesmo.

Editado por A.Mokk (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 29/08/2023 em 09:57, A.Mokk disse:

Acabei de testar aqui, ao tentar resetar ele nao desconectou como no NPC que mandei acima. Alem disso, o level se manteve mesmo resetando, o HP/MP resetou mas acho que nao acrescentou os 10%, ele abre uma caixa ao resetar falando que ganhou 5% a mais de dano mas tambem nao consegui notar essa diferença... Aparece um erro na distro ao tentar resetar

[9:49:37.586] [Error - NpcScript Interface]
[9:49:37.588] In a timer event called from:
[9:49:37.589] data/npc/scripts/reseter.lua:onCreatureSay
[9:49:37.590] Description:
[9:49:37.591] data/npc/scripts/reseter.lua:61: attempt to call global 'getCreatureDamage' (a nil value)
[9:49:37.595] stack traceback:
[9:49:37.596]   data/npc/scripts/reseter.lua:61: in function 'addReset'
[9:49:37.597]   data/npc/scripts/reseter.lua:95: in function <data/npc/scripts/reseter.lua:93>

O outro script nao da nenhum erro ao iniciar a distro, mas ao logar ele da o seguinte erro :

[10:6:56.230] [Error - CreatureScript Interface]
[10:6:56.233] data/creaturescripts/scripts/reset_system.lua:onLogin
[10:6:56.235] Description:
[10:6:56.238] data/lib/reset.lua:68: attempt to call global 'getPlayerResets' (a nil value)
[10:6:56.244] stack traceback:
[10:6:56.247]   data/lib/reset.lua:68: in function 'getCount'
[10:6:56.249]   data/lib/reset.lua:80: in function 'getInfo'
[10:6:56.255]   data/lib/reset.lua:84: in function 'addBonuses'
[10:6:56.259]   data/creaturescripts/scripts/reset_system.lua:2: in function <data/creaturescripts/scripts/reset_system.lua:1>


Com esse acima, nao to conseguindo logar nos char

EDIT 3#

Consegui abrir os char baixando a sua pasta de libs porem o erro de manter o level ainda continua, notei que ao resetar ele nao ta acrescentando a vida e a mana, o dano eu nem cheguei a testar pois ao abrir com a sua pasta libs, varias outras coisas do ot pararam de pegar dai nem deslogar eu conseguia mas consegui "dar o reset" apesar do level se manter o mesmo.

É só substituir nessa parte e fazer o teste.

function addReset(cid)
    if npcHandler:isFocused(cid) then
        npcHandler:releaseFocus(cid)
    end

    talkState[talkUser] = 0
    resets = getResets(cid)
    setPlayerStorageValue(cid, 378378, resets + 1)
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

    -- Ajustar HP
    local hp = getCreatureMaxHealth(cid)
    local resethp = hp * (config.percent / 100)
    setCreatureMaxHealth(cid, resethp)
    local differencehp = hp - resethp
    doCreatureAddHealth(cid, -differencehp)

    -- Ajustar MP
    local mana = getCreatureMaxMana(cid)
    local resetmana = mana * (config.percent / 100)
    setCreatureMaxMana(cid, resetmana)
    local differencemana = mana - resetmana
    doCreatureAddMana(cid, -differencemana)

    -- Ajustar dano
    local damage = getCreatureDamage(cid)
    if damage then 
        local additionalDamage = damage * (config.damagePercent / 100)
        local newDamage = damage + additionalDamage
        setCreatureDamage(cid, newDamage)
    end

    doRemoveCreature(cid)

    local description = resets + 1
    db.query("UPDATE `players` SET `description` = ' [Reset: " .. description .. "]' WHERE `players`.`id`= " .. playerid .. "")
    db.query("UPDATE `players` SET `level`=" .. config.newlevel .. ",`experience`= 0 WHERE `players`.`id`= " .. playerid .. "")
    return true
end

 

Se der erro nessa parte "getCreatureDamage", tente fazer uma alteração aqui.

local damage = creature.damage
local additionalDamage = damage * (config.damagePercent / 100)
local newDamage = damage + additionalDamage
creature.damage = newDamage

 

Editado por GM Vortex (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Fiz a modificação, segue os erros: Ao resetar voce é enviado para o templo mas o level permanece o mesmo, ao usar magias de healing a vida começa a reduzir ate chegar a 21/31 de HP/MP e nao sobe mais...

Link para o post
Compartilhar em outros sites
local config = {
    minlevel = 500,
    price = 100000000,
    newlevel = 20,
    priceByReset = 100000000,
    percent = 10,
    maxresets = 20,
    levelbyreset = 100,
    damagePercent = 5,
}

function getResets(uid)
    local resets = getPlayerStorageValue(uid, 378378)
    if resets < 0 then
        resets = 0
    end
    return resets
end

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function addReset(cid)
    if npcHandler:isFocused(cid) then
        npcHandler:releaseFocus(cid)
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    talkState[talkUser] = 0
    local resets = getResets(cid)
    setPlayerStorageValue(cid, 378378, resets + 1)
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

    -- Ajustar HP
    local hp = getCreatureMaxHealth(cid)
    local resethp = hp * (config.percent / 100)
    setCreatureMaxHealth(cid, resethp)
    local differencehp = resethp - hp
    doCreatureAddHealth(cid, differencehp)

    -- Ajustar MP
    local mana = getCreatureMaxMana(cid)
    local resetmana = mana * (config.percent / 100)
    setCreatureMaxMana(cid, resetmana)
    local differencemana = resetmana - mana
    doCreatureAddMana(cid, differencemana)

    -- Ajustar dano
    local damage = getCreatureDamage(cid)
    if damage then
        local additionalDamage = damage * (config.damagePercent / 100)
        local newDamage = damage + additionalDamage
        setCreatureDamage(cid, newDamage)
    end

    local description = resets + 1
    local playerid = getPlayerGUID(cid)
    db.query("UPDATE `players` SET `description` = ' [Reset: " .. description .. "]' WHERE `players`.`id`= " .. playerid .. "")
    db.query("UPDATE `players` SET `level`=" .. config.newlevel .. ",`experience`= 0 WHERE `players`.`id`= " .. playerid .. "")
    doRemoveCreature(cid)
    return true
end

function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    talkState[talkUser] = 0
    local newPrice = config.price + (getResets(cid) * config.priceByReset)
    local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)

    if msgcontains(msg, 'reset') then
        if getResets(cid) < config.maxresets then
            selfSay('Voce gostaria de resetar? Isso vai custar ' .. newPrice .. " gp's!", cid)
            talkState[talkUser] = 1
        else
            selfSay('Voce ja atingiu o nivel maximo de resets!', cid)
        end
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if getPlayerMoney(cid) < newPrice then
            selfSay('E necessario ter ' .. newPrice .. " gp's para resetar!", cid)
        elseif getPlayerLevel(cid) < newminlevel then
            selfSay('O level minimo para resetar e ' .. newminlevel .. '!', cid)
        else
            doPlayerRemoveMoney(cid, newPrice)
            playerid = getPlayerGUID(cid)
            addEvent(function()
                if isPlayer(cid) then
                    addReset(cid)
                end
            end, 3000)
            local number = getResets(cid) + 1
            local msg = "---[Reset: " .. number .. "]-- Voce resetou! Voce ganhou " .. config.damagePercent .. "% de dano adicional. Voce sera desconectado em 3 segundos."
            doPlayerPopupFYI(cid, msg)
            talkState[talkUser] = 0
            npcHandler:releaseFocus(cid)
        end
        talkState[talkUser] = 0
    elseif (msgcontains(msg, 'no')) and isInArray({ 1 }, talkState[talkUser]) == TRUE then
        talkState[talkUser] = 0
        npcHandler:releaseFocus(cid)
        selfSay('Ok.', cid)
    elseif msgcontains(msg, 'quantity') then
        selfSay('You have a total of ' .. getResets(cid) .. ' reset(s).', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

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