Ir para conteúdo
  • 0

Sistema de Stage Exp por reset


aicilopmes123

Pergunta

boa tarde, nao sei se é a area correta mas preciso de um sistema de rr que diminui a exp.

por exemplo: 0 a 10 rr, e uma exp

                     10 a 20 diminuiu a exp

 

e assim vai, cada 10 rr vai dimunuindo..

se alguem conseguir me ajuda agradeço 

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
25 minutos atrás, aicilopmes123 disse:
Versão do Servidor:
Tipo de Script:
Código:
  Mostrar conteúdo oculto



 

boa tarde, nao sei se é a area correta mas preciso de um sistema de rr que diminui a exp.

por exemplo: 0 a 10 rr, e uma exp

                     10 a 20 diminuiu a exp

 

e assim vai, cada 10 rr vai dimunuindo..

se alguem conseguir me ajuda agradeço 

A área correta seria em pedidos de script: https://www.xtibia.com/forum/forum/1260-scripts/

 

Sobre seu pedido, sua base é Tibia ou Derivado?

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, aicilopmes123 disse:

dsclp sou novo nisso, tibia

 

De nada, sem problemas!

 

No arquivo Data/Xml/Stages.xml fica o rate de stage por nível, pode editar lá conforme sua vontade. É bem simples de mexer:

<?xml version="1.0" encoding="UTF-8"?>
<stages>
	<world id="0" multiplier="1">
		<stage minlevel="1" maxlevel="200" multiplier="350"/>
        <stage minlevel="201" maxlevel="250" multiplier="250"/>
		<stage minlevel="251" maxlevel="300" multiplier="150"/>
		<stage minlevel="301" maxlevel="350" multiplier="100"/>
        <stage minlevel="351" maxlevel="400" multiplier="50"/>
		<stage minlevel="401" maxlevel="450" multiplier="20"/>
		<stage minlevel="451" maxlevel="500" multiplier="10"/>
		<stage minlevel="501" maxlevel="550" multiplier="2"/>
		<stage minlevel="551" maxlevel="600" multiplier="1"/>
        <stage minlevel="601" multiplier="0.5"/>
	</world>
</stages>

Você coloca o multiplicador para o level mínimo e máximo do rate daquele stage.

Link para o comentário
Compartilhar em outros sites

  • 0
Agora, aicilopmes123 disse:

certo isso eu entendo, tipo oq eu queria exatamente é exemplo: tenho 10 resets recebo 100% do xp, tenho 20 resets recebo 75% do xp entende?

 

a cada tantos resets a xp cai

 

Como assim reset?

Link para o comentário
Compartilhar em outros sites

  • 0

meu servidor tem reset vamos supor tenho 717k de level, !resetar voltei pro level 8 só que a vida mantem entende?

 

entao eu criar criar um sistema de exp que quando tiver 10 resets recebe tantos de exp, fui para 20 resets essa exp cai em tantos porcentos

 

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, aicilopmes123 disse:

meu servidor tem reset vamos supor tenho 717k de level, !resetar voltei pro level 8 só que a vida mantem entende?

 

entao eu criar criar um sistema de exp que quando tiver 10 resets recebe tantos de exp, fui para 20 resets essa exp cai em tantos porcentos

 

Agora entendi, preciso que mande o script do reset que tem.

Link para o comentário
Compartilhar em outros sites

  • 0

ele é por database 

 

local exhaustionMinutes = 1 -- exausted em minutos
local storageUse = 32324 -- storage usado no exausted.

function onSay(cid, words, param)
if words =="!resetar" then
if(exhaustion.check(cid, storageUse) == TRUE) then
if (exhaustion.get(cid, storageUse) >= 10) then
doPlayerSendCancel(cid, "Você só pode usar após [" .. math.floor(exhaustion.get(cid, storageUse) / 80 + 1) .."] Minutos.")
end
if (exhaustion.get(cid, storageUse) <= 10) then
doPlayerSendCancel(cid, "Você só pode usar após [" .. exhaustion.get(cid, storageUse).."] segundos.")
end
return TRUE
end


exhaustion.set(cid, storageUse, exhaustionMinutes*10)
--[ Condições de Reset ] --
local coNdConf = {
needPz = true, -- Precisa estar em Pz pra resetar? [true, false]
needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false]
withe = false, -- Players com Pk Withe podem resetar? [true, false]
red = false, -- Players com Pk Red pode resetar? [true, false]
battle = true, -- Players precisão estar sem battle pra resetar? [true, false]
teleport = false, -- Teleportar Player para o templo após resetar? [true, false]
look = true, -- Aparecer Resets no Look do Player? [true, false]
pid = getPlayerGUID(cid), -- Não Mexer.

--[ Configurações do Reset ] --
resetConf = {
Level = 717217, -- Level Necessário para Resetar. [Valor]
backLvl = 5000, -- Level que voltará após o Reset. [Valor]
time = 0.0, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor]
},
}


--[[>> STAGES <<]]--
x=true;X=true -- Não Mexer.
local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}]


-- [RESETS] | [PREMMY] | [FREE]
stage1= {resets= 4, premmy= 650000, free= 650000},
stage2= {resets= 9, premmy= 650000, free= 650000}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}])
stage3= {resets= 14, premmy= 650000, free= 650000}, -- resets = Número de resets para o Stage;
stage4= {resets= 19, premmy= 650000, free= 650000}, -- premmy = Level necessário para Premium Accounts;
stage5= {resets= 24, premmy= 650000, free= 650000}, -- free = Level necessário para Free Accounts;
stage6= {resets= 29, premmy= 650000, free= 650000}, -- Coloque em Ordem...
stage7= {resets= 35, premmy= 650000, free= 650000}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES]
stage8= {resets= 39, premmy= 650000, free= 650000}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x}
stage9= {resets= 45, premmy= 650000, free= 650000},
stage10={resets= 46, premmy= 717217, free= 717217},
stage11={resets= 54, premmy= 717217, free= 717217},
stage12={resets= 59, premmy= 717217, free= 717217},
stage13={resets= 64, premmy= 717217, free= 717217},
stage14={resets= 69, premmy= 717217, free= 717217},
stage15={resets= 74, premmy= 717217, free= 717217},
stage16={resets= 79, premmy= 717217, free= 717217},
stage17={resets= 80, premmy= 717217, free= 717217},
stage18={resets= 82, premmy= 717217, free= 717217},
stage19={resets= 85, premmy= 717217, free= 717217},
stage20={resets= 87, premmy= 717217, free= 717217},
stage21={resets= 88, premmy= 717217, free= 717217},
stage22={resets= 89, premmy= 717217, free= 717217},
stage23={resets= 90, premmy= 717217, free= 717217},
stage24={resets= 95, premmy= 717217, free= 717217},
stage25={resets= 100, premmy= 717217, free= 717217},
}


--[[>> FIM STAGES <<]]--
--=[Pega Valor de Resets]=--
function getPlayerReset(cid)
local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";")
rss = qr:getDataInt("reset", coNdConf.pid)
if rss < 0 then
rss = 0
end
return rss
end
local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage
local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid)
local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";"
local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";"
local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";"
local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";"
--=[Reseta]=--
function addValue(value)
if coNdConf.look == false then
doRemoveCreature(cid)
db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query)
else
doRemoveCreature(cid)
db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query)
return LUA_NO_ERROR
end
end
function nowReseting()
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -")
return true
end
if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
doPlayerPopupFYI(cid, success)
addEvent(addValue, coNdConf.resetConf.time*0, value)
else
doPlayerPopupFYI(cid, success)
addEvent(doTeleportThing, coNdConf.resetConf.time*0, cid, getTownTemplePosition(getPlayerTown(cid)))
addEvent(addValue, coNdConf.resetConf.time*0, value)
return true
end
end
--[sTAGES Nao mexer em nada.]--
function checkLevelStageReset(cid)
local stages = {
{resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free},
{resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free},
{resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free},
{resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free},
{resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free},
{resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free},
{resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free},
{resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free},
{resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free},
{resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free},
{resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free},
{resets=stage.stage12.resets, premmy=stage.stage12.premmy, free=stage.stage12.free},
{resets=stage.stage13.resets, premmy=stage.stage13.premmy, free=stage.stage13.free},
{resets=stage.stage14.resets, premmy=stage.stage14.premmy, free=stage.stage14.free},
{resets=stage.stage15.resets, premmy=stage.stage15.premmy, free=stage.stage15.free},
{resets=stage.stage16.resets, premmy=stage.stage16.premmy, free=stage.stage16.free},
{resets=stage.stage17.resets, premmy=stage.stage17.premmy, free=stage.stage17.free},
{resets=stage.stage18.resets, premmy=stage.stage18.premmy, free=stage.stage18.free},
{resets=stage.stage19.resets, premmy=stage.stage19.premmy, free=stage.stage19.free},
{resets=stage.stage20.resets, premmy=stage.stage20.premmy, free=stage.stage20.free},
{resets=stage.stage21.resets, premmy=stage.stage21.premmy, free=stage.stage21.free},
{resets=stage.stage22.resets, premmy=stage.stage22.premmy, free=stage.stage22.free},
{resets=stage.stage23.resets, premmy=stage.stage23.premmy, free=stage.stage23.free},
{resets=stage.stage24.resets, premmy=stage.stage24.premmy, free=stage.stage24.free},
{resets=stage.stage25.resets, premmy=stage.stage25.premmy, free=stage.stage25.free},
}
local resets = getPlayerReset(cid)
for i, tab in ipairs(stages) do
if resets <= tab.resets then
coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free
break
end
end
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Você precisa ter ["..coNdConf.resetConf.Level.."]. leveis , Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." levels para você Resetar seu personagem.")
return TRUE
end
if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
doPlayerPopupFYI(cid, success)
addEvent(addValue, coNdConf.resetConf.time*0, value)
else
doPlayerPopupFYI(cid, success)
addEvent(addValue, coNdConf.resetConf.time*0, value)
addEvent(doTeleportThing, coNdConf.resetConf.time*0, cid, getTownTemplePosition(getPlayerTown(cid)))
return true
end
end
function newReset(cid)
if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end
if(coNdConf.needPa == true) and not isPremium(cid) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end
if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end
if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end
if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end
local xy = {true,false}
table.insert(stage.Abilitar, false)
table.insert(stage.Desabilitar, false)
if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then
checkLevelStageReset(cid)
elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then
nowReseting()
else
doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!")
end
return true
end
function tableResetInstall()
print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ")
addEvent(newReset, 0, cid)
return false
end
if tableResetInstall() then
end
end
end

Link para o comentário
Compartilhar em outros sites

  • 0

 

12 horas atrás, aicilopmes123 disse:
Versão do Servidor:
Tipo de Script:
Código:
  Mostrar conteúdo oculto



 

boa tarde, nao sei se é a area correta mas preciso de um sistema de rr que diminui a exp.

por exemplo: 0 a 10 rr, e uma exp

                     10 a 20 diminuiu a exp

 

e assim vai, cada 10 rr vai dimunuindo..

se alguem conseguir me ajuda agradeço 

então mano tem um jeito muito simples de fazer isso porem eu fiquei mt tempo parado e estou meio confuso nesse script talvez seja uma versão que não estou familiarizado mas talvez vc seja capaz de fazer comigo dizendo aqui para vc

primeiro teríamos q definir uma storage para cada nível 
essa stages ai ate q serve mas tou meio perdido em como extrair a storage do stage -- nessa parte n posso ajudar 
o restante eu posso ajudar
vai em data/creature script/script e procura o arquivo login.lua
em function onLogin
abaixo ai adiciona essa linha
registerCreatureEvent(cid, "exprr") 
recomendo colocar proximo de outros creatureEvent ja adicionado para ficar mais organizado

 

crie um arquivo com nome de exprr.lua na mesma pasta do login.lua e cole isso dentro
 

Spoiler

function onLogin(cid)
        if getPlayerStorageValue(cid,000000000000) ==1 then --- aqui no 0 vc teria que colocar a storage certa/// onde esta o ==1 e a quantidade de reset
          doPlayerSetExperienceRate(cid,0.5) --- aqui o player vai ganhar 50% da xp se colocar 0.9 ele vai ganhar 90% e assim por diante

------ aqui vc pode ir criando outras linhas com numeros de resets diferentes vc pode copiar e colar essas 2 linhas acima  e ir mudando  a quantidade de reset ali onde esta o 1 e a % de xp -----------onde esta o 0.5 so n vou poder te ajudar com estrair a storage do reset nessas linhas resets=stage.stage21.resets  mesmo sabendo que ja se encontra em 21 no caso
             end
return true
   end

 

Link para o comentário
Compartilhar em outros sites

  • 0
12 horas atrás, aicilopmes123 disse:

ele é por database 

 

local exhaustionMinutes = 1 -- exausted em minutos
local storageUse = 32324 -- storage usado no exausted.

function onSay(cid, words, param)
if words =="!resetar" then
if(exhaustion.check(cid, storageUse) == TRUE) then
if (exhaustion.get(cid, storageUse) >= 10) then
doPlayerSendCancel(cid, "Você só pode usar após [" .. math.floor(exhaustion.get(cid, storageUse) / 80 + 1) .."] Minutos.")
end
if (exhaustion.get(cid, storageUse) <= 10) then
doPlayerSendCancel(cid, "Você só pode usar após [" .. exhaustion.get(cid, storageUse).."] segundos.")
end
return TRUE
end


exhaustion.set(cid, storageUse, exhaustionMinutes*10)
--[ Condições de Reset ] --
local coNdConf = {
needPz = true, -- Precisa estar em Pz pra resetar? [true, false]
needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false]
withe = false, -- Players com Pk Withe podem resetar? [true, false]
red = false, -- Players com Pk Red pode resetar? [true, false]
battle = true, -- Players precisão estar sem battle pra resetar? [true, false]
teleport = false, -- Teleportar Player para o templo após resetar? [true, false]
look = true, -- Aparecer Resets no Look do Player? [true, false]
pid = getPlayerGUID(cid), -- Não Mexer.

--[ Configurações do Reset ] --
resetConf = {
Level = 717217, -- Level Necessário para Resetar. [Valor]
backLvl = 5000, -- Level que voltará após o Reset. [Valor]
time = 0.0, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor]
},
}


--[[>> STAGES <<]]--
x=true;X=true -- Não Mexer.
local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}]


-- [RESETS] | [PREMMY] | [FREE]
stage1= {resets= 4, premmy= 650000, free= 650000},
stage2= {resets= 9, premmy= 650000, free= 650000}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}])
stage3= {resets= 14, premmy= 650000, free= 650000}, -- resets = Número de resets para o Stage;
stage4= {resets= 19, premmy= 650000, free= 650000}, -- premmy = Level necessário para Premium Accounts;
stage5= {resets= 24, premmy= 650000, free= 650000}, -- free = Level necessário para Free Accounts;
stage6= {resets= 29, premmy= 650000, free= 650000}, -- Coloque em Ordem...
stage7= {resets= 35, premmy= 650000, free= 650000}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES]
stage8= {resets= 39, premmy= 650000, free= 650000}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x}
stage9= {resets= 45, premmy= 650000, free= 650000},
stage10={resets= 46, premmy= 717217, free= 717217},
stage11={resets= 54, premmy= 717217, free= 717217},
stage12={resets= 59, premmy= 717217, free= 717217},
stage13={resets= 64, premmy= 717217, free= 717217},
stage14={resets= 69, premmy= 717217, free= 717217},
stage15={resets= 74, premmy= 717217, free= 717217},
stage16={resets= 79, premmy= 717217, free= 717217},
stage17={resets= 80, premmy= 717217, free= 717217},
stage18={resets= 82, premmy= 717217, free= 717217},
stage19={resets= 85, premmy= 717217, free= 717217},
stage20={resets= 87, premmy= 717217, free= 717217},
stage21={resets= 88, premmy= 717217, free= 717217},
stage22={resets= 89, premmy= 717217, free= 717217},
stage23={resets= 90, premmy= 717217, free= 717217},
stage24={resets= 95, premmy= 717217, free= 717217},
stage25={resets= 100, premmy= 717217, free= 717217},
}


--[[>> FIM STAGES <<]]--
--=[Pega Valor de Resets]=--
function getPlayerReset(cid)
local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";")
rss = qr:getDataInt("reset", coNdConf.pid)
if rss < 0 then
rss = 0
end
return rss
end
local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage
local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid)
local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";"
local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";"
local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";"
local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";"
--=[Reseta]=--
function addValue(value)
if coNdConf.look == false then
doRemoveCreature(cid)
db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query)
else
doRemoveCreature(cid)
db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query)
return LUA_NO_ERROR
end
end
function nowReseting()
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -")
return true
end
if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
doPlayerPopupFYI(cid, success)
addEvent(addValue, coNdConf.resetConf.time*0, value)
else
doPlayerPopupFYI(cid, success)
addEvent(doTeleportThing, coNdConf.resetConf.time*0, cid, getTownTemplePosition(getPlayerTown(cid)))
addEvent(addValue, coNdConf.resetConf.time*0, value)
return true
end
end
--[sTAGES Nao mexer em nada.]--
function checkLevelStageReset(cid)
local stages = {
{resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free},
{resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free},
{resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free},
{resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free},
{resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free},
{resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free},
{resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free},
{resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free},
{resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free},
{resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free},
{resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free},
{resets=stage.stage12.resets, premmy=stage.stage12.premmy, free=stage.stage12.free},
{resets=stage.stage13.resets, premmy=stage.stage13.premmy, free=stage.stage13.free},
{resets=stage.stage14.resets, premmy=stage.stage14.premmy, free=stage.stage14.free},
{resets=stage.stage15.resets, premmy=stage.stage15.premmy, free=stage.stage15.free},
{resets=stage.stage16.resets, premmy=stage.stage16.premmy, free=stage.stage16.free},
{resets=stage.stage17.resets, premmy=stage.stage17.premmy, free=stage.stage17.free},
{resets=stage.stage18.resets, premmy=stage.stage18.premmy, free=stage.stage18.free},
{resets=stage.stage19.resets, premmy=stage.stage19.premmy, free=stage.stage19.free},
{resets=stage.stage20.resets, premmy=stage.stage20.premmy, free=stage.stage20.free},
{resets=stage.stage21.resets, premmy=stage.stage21.premmy, free=stage.stage21.free},
{resets=stage.stage22.resets, premmy=stage.stage22.premmy, free=stage.stage22.free},
{resets=stage.stage23.resets, premmy=stage.stage23.premmy, free=stage.stage23.free},
{resets=stage.stage24.resets, premmy=stage.stage24.premmy, free=stage.stage24.free},
{resets=stage.stage25.resets, premmy=stage.stage25.premmy, free=stage.stage25.free},
}
local resets = getPlayerReset(cid)
for i, tab in ipairs(stages) do
if resets <= tab.resets then
coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free
break
end
end
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Você precisa ter ["..coNdConf.resetConf.Level.."]. leveis , Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." levels para você Resetar seu personagem.")
return TRUE
end
if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
doPlayerPopupFYI(cid, success)
addEvent(addValue, coNdConf.resetConf.time*0, value)
else
doPlayerPopupFYI(cid, success)
addEvent(addValue, coNdConf.resetConf.time*0, value)
addEvent(doTeleportThing, coNdConf.resetConf.time*0, cid, getTownTemplePosition(getPlayerTown(cid)))
return true
end
end
function newReset(cid)
if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end
if(coNdConf.needPa == true) and not isPremium(cid) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end
if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end
if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end
if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end
local xy = {true,false}
table.insert(stage.Abilitar, false)
table.insert(stage.Desabilitar, false)
if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then
checkLevelStageReset(cid)
elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then
nowReseting()
else
doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!")
end
return true
end
function tableResetInstall()
print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ")
addEvent(newReset, 0, cid)
return false
end
if tableResetInstall() then
end
end
end

Quando postar um script assim, procure colocar dentro da tag code ou spoiler, para ficar mais legível.

 

Sobre o script, eu criei uma função para setar o rate da exp de acordo com a quantidade de resets, os parâmetros são cid, quantidade de reset mínimo, reset máximo e rate da exp.

 

Substitua o código por esse:

local exhaustionMinutes = 1 -- exausted em minutos
local storageUse = 32324 -- storage usado no exausted.

function onSay(cid, words, param)
if words =="!resetar" then
	if(exhaustion.check(cid, storageUse) == TRUE) then
		if (exhaustion.get(cid, storageUse) >= 10) then
			doPlayerSendCancel(cid, "Você só pode usar após [" .. math.floor(exhaustion.get(cid, storageUse) / 80 + 1) .."] Minutos.")
		end
		if (exhaustion.get(cid, storageUse) <= 10) then
			doPlayerSendCancel(cid, "Você só pode usar após [" .. exhaustion.get(cid, storageUse).."] segundos.")
		end
	return TRUE
	end


exhaustion.set(cid, storageUse, exhaustionMinutes*10)
--[ Condições de Reset ] --
local coNdConf = {
needPz = true, -- Precisa estar em Pz pra resetar? [true, false]
needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false]
withe = false, -- Players com Pk Withe podem resetar? [true, false]
red = false, -- Players com Pk Red pode resetar? [true, false]
battle = true, -- Players precisão estar sem battle pra resetar? [true, false]
teleport = false, -- Teleportar Player para o templo após resetar? [true, false]
look = true, -- Aparecer Resets no Look do Player? [true, false]
pid = getPlayerGUID(cid), -- Não Mexer.

--[ Configurações do Reset ] --
resetConf = {
Level = 717217, -- Level Necessário para Resetar. [Valor]
backLvl = 5000, -- Level que voltará após o Reset. [Valor]
time = 0.0, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor]
},
}


--[[>> STAGES <<]]--
x=true;X=true -- Não Mexer.
local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}]


-- [RESETS] | [PREMMY] | [FREE]
stage1= {resets= 4, premmy= 650000, free= 650000},
stage2= {resets= 9, premmy= 650000, free= 650000}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}])
stage3= {resets= 14, premmy= 650000, free= 650000}, -- resets = Número de resets para o Stage;
stage4= {resets= 19, premmy= 650000, free= 650000}, -- premmy = Level necessário para Premium Accounts;
stage5= {resets= 24, premmy= 650000, free= 650000}, -- free = Level necessário para Free Accounts;
stage6= {resets= 29, premmy= 650000, free= 650000}, -- Coloque em Ordem...
stage7= {resets= 35, premmy= 650000, free= 650000}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES]
stage8= {resets= 39, premmy= 650000, free= 650000}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x}
stage9= {resets= 45, premmy= 650000, free= 650000},
stage10={resets= 46, premmy= 717217, free= 717217},
stage11={resets= 54, premmy= 717217, free= 717217},
stage12={resets= 59, premmy= 717217, free= 717217},
stage13={resets= 64, premmy= 717217, free= 717217},
stage14={resets= 69, premmy= 717217, free= 717217},
stage15={resets= 74, premmy= 717217, free= 717217},
stage16={resets= 79, premmy= 717217, free= 717217},
stage17={resets= 80, premmy= 717217, free= 717217},
stage18={resets= 82, premmy= 717217, free= 717217},
stage19={resets= 85, premmy= 717217, free= 717217},
stage20={resets= 87, premmy= 717217, free= 717217},
stage21={resets= 88, premmy= 717217, free= 717217},
stage22={resets= 89, premmy= 717217, free= 717217},
stage23={resets= 90, premmy= 717217, free= 717217},
stage24={resets= 95, premmy= 717217, free= 717217},
stage25={resets= 100, premmy= 717217, free= 717217},
}


--[[>> FIM STAGES <<]]--
--=[Pega Valor de Resets]=--
function getPlayerReset(cid)
local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";")
rss = qr:getDataInt("reset", coNdConf.pid)
if rss < 0 then
	rss = 0
end
return rss
end

-- FUNÇÃO PARA AUMENTAR O RATE DA EXP DE ACORDO COM A QUANTIDADE DE RESETS --
function setExpRate(cid, reset_min, reset_max, rate)
  if getPlayerReset(cid) > reset_min and getPlayerReset(cid) <= reset_max then 
     return doPlayerSetExperienceRate(cid, rate)	
  end
end  

local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage
local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid)
local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";"
local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";"
local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";"
local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";"

--=[Reseta]=--
function addValue(value)
if coNdConf.look == false then
	doRemoveCreature(cid)
	db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query)
else
	doRemoveCreature(cid)
	db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query)
return LUA_NO_ERROR
end
end

function nowReseting()
	if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -")
	return true
	end
	
	if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
		doPlayerPopupFYI(cid, success)
		addEvent(addValue, coNdConf.resetConf.time*0, value)
		setPlayerStorageValue(cid, storage_contador, storage_contador + 1)
	else
		doPlayerPopupFYI(cid, success)
		addEvent(doTeleportThing, coNdConf.resetConf.time*0, cid, getTownTemplePosition(getPlayerTown(cid)))
		addEvent(addValue, coNdConf.resetConf.time*0, value)
		setPlayerStorageValue(cid, storage_contador, storage_contador + 1)
	return true
	end
end

--[sTAGES Nao mexer em nada.]--
function checkLevelStageReset(cid)
local stages = {
{resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free},
{resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free},
{resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free},
{resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free},
{resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free},
{resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free},
{resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free},
{resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free},
{resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free},
{resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free},
{resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free},
{resets=stage.stage12.resets, premmy=stage.stage12.premmy, free=stage.stage12.free},
{resets=stage.stage13.resets, premmy=stage.stage13.premmy, free=stage.stage13.free},
{resets=stage.stage14.resets, premmy=stage.stage14.premmy, free=stage.stage14.free},
{resets=stage.stage15.resets, premmy=stage.stage15.premmy, free=stage.stage15.free},
{resets=stage.stage16.resets, premmy=stage.stage16.premmy, free=stage.stage16.free},
{resets=stage.stage17.resets, premmy=stage.stage17.premmy, free=stage.stage17.free},
{resets=stage.stage18.resets, premmy=stage.stage18.premmy, free=stage.stage18.free},
{resets=stage.stage19.resets, premmy=stage.stage19.premmy, free=stage.stage19.free},
{resets=stage.stage20.resets, premmy=stage.stage20.premmy, free=stage.stage20.free},
{resets=stage.stage21.resets, premmy=stage.stage21.premmy, free=stage.stage21.free},
{resets=stage.stage22.resets, premmy=stage.stage22.premmy, free=stage.stage22.free},
{resets=stage.stage23.resets, premmy=stage.stage23.premmy, free=stage.stage23.free},
{resets=stage.stage24.resets, premmy=stage.stage24.premmy, free=stage.stage24.free},
{resets=stage.stage25.resets, premmy=stage.stage25.premmy, free=stage.stage25.free},
}
local resets = getPlayerReset(cid)
for i, tab in ipairs(stages) do
if resets <= tab.resets then
coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free
break
end
end
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Você precisa ter ["..coNdConf.resetConf.Level.."]. leveis , Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." levels para você Resetar seu personagem.")
return TRUE
end

if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
	doPlayerPopupFYI(cid, success)
	addEvent(addValue, coNdConf.resetConf.time*0, value)
	setExpRate(cid, 0, 5, 1.5) -- RATE DO RESET 1 A 5 RESETS (A VERIFICAÇÃO ESTÁ MAIOR DO QUE O RESET MÍNIMO, POR ISSO COMEÇA COM 0)
	setExpRate(cid, 5, 10, 2) -- RATE DO RESET 6 A 10
    setExpRate(cid, 10, 20, 5)	-- RATE DO RESET 11 A 20 
	setExpRate(cid, 20, 50, 10) -- RATE DO RESET 21 A 50
	setExpRate(cid, 50, 100, 20) -- RATE DO RESET 51 A 100

	
else
	doPlayerPopupFYI(cid, success)
	addEvent(addValue, coNdConf.resetConf.time*0, value)
	addEvent(doTeleportThing, coNdConf.resetConf.time*0, cid, getTownTemplePosition(getPlayerTown(cid)))
	setExpRate(cid, 0, 5, 1.5) -- RATE COM 1 RESET 1 A 5 RESETS (A VERIFICAÇÃO ESTÁ MAIOR DO QUE O RESET MÍNIMO, POR ISSO COMEÇA COM 0)
	setExpRate(cid, 5, 10, 2) -- RATE DO RESET 6 A 10
    setExpRate(cid, 10, 20, 5)	-- RATE DO RESET 11 A 20
	setExpRate(cid, 20, 50, 10) -- RATE DO RESET 21 A 50
	setExpRate(cid, 50, 100, 20) -- RATE DO RESET 51 A 100
return true
end
end

function newReset(cid)
	if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then
		err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end
	if(coNdConf.needPa == true) and not isPremium(cid) then
		err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end
	if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then
		err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end
	if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then
		err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end
	if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
		err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end
		local xy = {true,false}
		table.insert(stage.Abilitar, false)
		table.insert(stage.Desabilitar, false)
	if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then
		checkLevelStageReset(cid)
	elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then
		nowReseting()
	else
		doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!")
	end
return true
end
	
function tableResetInstall()
	print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ")
	addEvent(newReset, 0, cid)
return false
end

if tableResetInstall() then
end
end
end

Eu deixei comentado a linha onde aumenta o rate de acordo com a quantidade de resets, é essa função:

setExpRate(cid, 0, 5, 2)

Testa e me fala, mas pode ser que dê erro caso não tenha a função doPlayerSetExperienceRate(cid, rate) que eu uso na função setExpRate, caso não tenha avisa que te passo. Como não informou sua TFS, não sei se tem ou não.

Editado por Yan18
Link para o comentário
Compartilhar em outros sites

  • 0

eu ativei o sistema de reset certo? peguei um char com 15 reset e outro com 0 matei, e kd um eu matei 1 mob e deu o mesmo level 

queria assim exemplo chegou em tal reset cai a exp em geral se ganhava 10 passara a ganhar 5 entende?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 22/04/2020 em 12:46, aicilopmes123 disse:

eu ativei o sistema de reset certo? peguei um char com 15 reset e outro com 0 matei, e kd um eu matei 1 mob e deu o mesmo level 

queria assim exemplo chegou em tal reset cai a exp em geral se ganhava 10 passara a ganhar 5 entende?

Tem que ver se sua base está trabalhando com stages de exp, precisa verificar no config.lua, procure por essa parte:

experienceStages = true
rateExperience = 500

Se estiver false, mude para true, e a linha de baixo será a taxa, precisará balancear de acordo com seu gosto. Após fazer isso, teste novamente com o script que arrumei para você, e não esqueça de configurar lá também a função setExpRate, lembrando que os parâmetros são: setExpRate(cid, RESET_MINIMO, RESET_MAXIMO, RATE_EXP). Eu deixei alguns de exemplo lá, só configurar ou basear.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...