Bienvenido a Open Games Community

Únete ahora para acceder a todas nuestras funciones. Una vez que te registres e inicies sesión, podrás crear temas, responder a hilos existentes, valorar la reputación de otros miembros y muchísimo más. Además, es rápido y totalmente gratuito; ¿a qué esperas?

RevScript TalkAction Reset System !reset

Alex

Administrador
Dev
Registrado
1 Sep 2021
Mensajes
2.362
Puntuación de reacción
28.641
Puntos
707
Hola a todos,

Aqui les traigo el Script por Dzfeoo y LeoTK para Resetear usando el comando, !reset

Nos iremos en data/scripts/talkactions/player e insertaremos el siguiente código:

local resetSys = TalkAction("!reset")

local config = {
backToLevel = 8,
redskull = true, -- need to be without redskull to reset?
battle = true, -- need to be without battle to reset?
pz = true, -- need to be in protect zone to reset?
stages = {
{resets = 4, level = 350, premium = 330},
{resets = 9, level = 355, premium = 340},
{resets = 14, level = 360, premium = 355},
{resets = 19, level = 365, premium = 360},
{resets = 24, level = 380, premium = 370},
{resets = 29, level = 390, premium = 380},
{resets = 34, level = 410, premium = 400},
{resets = 39, level = 430, premium = 420},
{resets = 44, level = 450, premium = 440},
{resets = 49, level = 480, premium = 470},
{resets = 54, level = 510, premium = 500},
{resets = 59, level = 550, premium = 540},
{resets = 64, level = 590, premium = 580},
{resets = 69, level = 630, premium = 620},
{resets = 74, level = 680, premium = 670},
{resets = 79, level = 730, premium = 720},
{resets = 84, level = 780, premium = 770},
{resets = 89, level = 860, premium = 840},
{resets = 94, level = 930, premium = 910},
{resets = 2^1024, level = 1010, premium = 990}
}
}

function resetSys.onSay(player, words, param)
local function getExperienceForLevel(lv)
lv = lv - 1
return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end
local function getPlayerResets()
local resets = player:getStorageValue(500)
return resets < 0 and 0 or resets
end

local function doPlayerAddResets(count)
player:setStorageValue(500, getPlayerResets() + count)
end

if config.redskull and player:getSkull() == 4 then
player:sendCancelMessage("You need to be without red skull to reset.")
return false
elseif config.pz and not getTilePzInfo(player:getPosition()) then
player:sendCancelMessage("You need to be in protection zone to reset.")
return false
elseif config.battle and player:getCondition(CONDITION_INFIGHT) then
player:sendCancelMessage("You need to be without battle to reset.")
return false
end

local resetLevel = 0
for x, y in ipairs(config.stages) do
if getPlayerResets() <= y.resets then
resetLevel = player:isPremium() and y.premium or y.level
break
end
end

if getPlayerLevel(player) < resetLevel then
player:sendCancelMessage("You need level " .. resetLevel .. " or more to reset.")
return false
end

doPlayerAddResets(1)
local healthMax, manaMax, health, mana = player:getMaxHealth(), player:getMaxMana(), player:getHealth(), player:getMana()
player:removeExperience(getExperienceForLevel(player:getLevel()) - getExperienceForLevel(config.backToLevel))
player:setMaxHealth(healthMax)
player:setMaxMana(manaMax)
player:addHealth(health)
player:addMana(mana)
player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_RED)
player:sendTextMessage(MESSAGE_INFO_DESCR, "Now you have " .. getPlayerResets() .. " " .. (getPlayerResets() == 1 and "reset" or "resets") .. ".")
return false
end

resetSys:register()
 

destroyer231

Mordragor Chronicles
Miembro
Registrado
1 Dic 2021
Mensajes
10
Puntuación de reacción
1
Puntos
128
Ubicación
usd
ola buenas noches como puedo aser para q no te deje toda lavida y mana q solo te de un porsentage muy minimo pero muy minimo
 

kiki20072

Mordragor Chronicles
Miembro
Registrado
24 Jun 2023
Mensajes
3
Puntuación de reacción
1
Puntos
125
Ubicación
Patos de Minas
ola buenas noches como puedo aser para q no te deje toda lavida y mana q solo te de un porsentage muy minimo pero muy minimo
Puedes hacer una variable para definir la vida y poner la vida base más un valor flexible que sería múltiplo por los reinicios.
Hice una adición al guión de arriba.
local resetSys = TalkAction("!reset")
local config = {
backToLevel = 8,
redskull = true, -- need to be without redskull to reset?
battle = true, -- need to be without battle to reset?
pz = true, -- need to be in protect zone to reset?
stages = {
{resets = 4, level = 350, premium = 330},
{resets = 9, level = 355, premium = 340},
{resets = 14, level = 360, premium = 355},
{resets = 19, level = 365, premium = 360},
{resets = 24, level = 380, premium = 370},
{resets = 29, level = 390, premium = 380},
{resets = 34, level = 410, premium = 400},
{resets = 39, level = 430, premium = 420},
{resets = 44, level = 450, premium = 440},
{resets = 49, level = 480, premium = 470},
{resets = 54, level = 510, premium = 500},
{resets = 59, level = 550, premium = 540},
{resets = 64, level = 590, premium = 580},
{resets = 69, level = 630, premium = 620},
{resets = 74, level = 680, premium = 670},
{resets = 79, level = 730, premium = 720},
{resets = 84, level = 780, premium = 770},
{resets = 89, level = 860, premium = 840},
{resets = 94, level = 930, premium = 910},
{resets = 2^1024, level = 1010, premium = 990}
}
}

function resetSys.onSay(player, words, param)
local function getExperienceForLevel(lv)
lv = lv - 1
return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end
local function getPlayerResets()
local resets = player:getStorageValue(500)
return resets < 0 and 0 or resets
end

local function doPlayerAddResets(count)
player:setStorageValue(500, getPlayerResets() + count)
end

if config.redskull and player:getSkull() == 4 then
player:sendCancelMessage("You need to be without red skull to reset.")
return false
elseif config.pz and not getTilePzInfo(player:getPosition()) then
player:sendCancelMessage("You need to be in protection zone to reset.")
return false
elseif config.battle and player:getCondition(CONDITION_INFIGHT) then
player:sendCancelMessage("You need to be without battle to reset.")
return false
end

local resetLevel = 0
for x, y in ipairs(config.stages) do
if getPlayerResets() <= y.resets then
resetLevel = player:isPremium() and y.premium or y.level
break
end
end

if getPlayerLevel(player) < resetLevel then
player:sendCancelMessage("You need level " .. resetLevel .. " or more to reset.")
return false
end

doPlayerAddResets(1)

local healthMaxBase = 185 -- Vida inicial nivel 8
local healthMaxBonus = 50 -- Vida extra por reinicio
local ManaMAxBase = 90 -- Mana inicial nivel 8
local ManaMAxBonus = 25 -- Mana extra por reinicio
local h = healthMaxBase + (healthMaxBonus * getPlayerResets())
local m = ManaMAxBase + (ManaMAxBonus * getPlayerResets())
local healthMax, manaMax, health, mana = player:getMaxHealth(), player:getMaxMana(), player:getHealth(), player:getMana()
player:removeExperience(getExperienceForLevel(player:getLevel()) - getExperienceForLevel(config.backToLevel))
player:setMaxHealth(h)
player:setMaxMana(m)
player:addHealth(h)
player:addMana(m)
player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_RED)
player:sendTextMessage(MESSAGE_INFO_DESCR, "Now you have " .. getPlayerResets() .. " " .. (getPlayerResets() == 1 and "reset" or "resets") .. ".")
return false
end

resetSys:register()

Como no he probado el script, no sé si funciona al agregar esta mecánica, es posible que no sirva de nada. Tengo un script de reinicio que hice por mi cuenta, pero es mucho más complejo, se deben hacer otras cosas en la base de datos y también declarar el almacenamiento en el reproductor.

Si este script funciona, el ajuste que hice permitirá una ganancia gradual con cada reinicio, se puede ajustar una ganancia definida de vida de 50 y maná de 25 en la variable
 

kiki20072

Mordragor Chronicles
Miembro
Registrado
24 Jun 2023
Mensajes
3
Puntuación de reacción
1
Puntos
125
Ubicación
Patos de Minas
Si quieres, echa un vistazo al script de talkactions.

local resets = TalkAction("!resetar")
function resets.onSay(player, words, param)
local ResetsAtualPlayer = player:getStorageValue(Storage.STORAGE_RESET)
local resets1a10 = math.max(50 * ResetsAtualPlayer, 50)
local resets11a20 = math.max(500 + ((ResetsAtualPlayer - 10) * 100), 100)
local resets21mais = math.max(1500 + ((ResetsAtualPlayer - 20) * 200), 200)
if player:getSkull() ~= 3 and ResetsAtualPlayer <= 9 and player:getLevel() >= resets1a10 then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce resetou.")
countReset = player:getStorageValue(Storage.STORAGE_RESET) + 1
player:teleportTo(player:getTown():getTemplePosition(), true)
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
local target = player
local name = player:getName()
player:setStorageValue(Storage.STORAGE_RESET, countReset)
local contagemReset = player:getStorageValue(Storage.STORAGE_RESET)
local multiplocap = player:getStorageValue(Storage.STORAGE_RESET) * 100
local multiplohpmp = player:getStorageValue(Storage.STORAGE_RESET) * 50
local capatual = 470 + multiplocap
local life = 185 + multiplohpmp
local mana = 90 + multiplohpmp
local criticalchance = math.min(contagemReset * 0.25, 10)
local criticalhit = math.min(contagemReset * 0.25, 10)
local lifeleech = math.min(contagemReset * 25, 1000)
local lifeleechchance = 100
local manaleech = math.min(contagemReset * 25, 1000)
local manaleechchance = 100
target:remove()
db.query("UPDATE `players` SET `stamina` = 2520 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `offlinetraining_time` = 43200 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `level` = 8 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `health` = " .. life .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `mana` = " .. mana .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `healthmax` = " .. life .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `manamax` = " .. mana .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `cap` = " .. capatual .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `reset` = " .. contagemReset .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_life_leech_amount` = " .. lifeleech .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_life_leech_chance` = " .. lifeleechchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_mana_leech_amount` = " .. manaleech .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_mana_leech_chance` = " .. manaleechchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_critical_hit_chance` = " .. criticalchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_critical_hit_damage` = " .. criticalhit .. " WHERE `name` = '" .. name .. "';")
elseif player:getSkull() ~= 3 and ResetsAtualPlayer >= 10 and ResetsAtualPlayer <= 19 and player:getLevel() >= resets11a20 then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce resetou.")
countReset = player:getStorageValue(Storage.STORAGE_RESET) + 1
countReset2 = player:getStorageValue(112554) + 1
player:setStorageValue(112554, countReset2)
player:teleportTo(player:getTown():getTemplePosition(), true)
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
local target = player
local name = player:getName()
player:setStorageValue(Storage.STORAGE_RESET, countReset)
player:setStorageValue(112554, countReset2)
local contagemReset = player:getStorageValue(Storage.STORAGE_RESET)
local multiplocap = player:getStorageValue(Storage.STORAGE_RESET) * 200
local multiplohpmp = player:getStorageValue(Storage.STORAGE_RESET) * 100
local contagemReset2 = player:getStorageValue(Storage.STORAGE_RESET)
local capatual = 470 + multiplocap
local life = 185 + multiplohpmp
local mana = 90 + multiplohpmp
local criticalchance = math.min(contagemReset * 0.25, 10)
local criticalhit = math.min(contagemReset * 0.25, 10)
local lifeleech = math.min(contagemReset * 25, 1000)
local lifeleechchance = 100
local manaleech = math.min(contagemReset * 25, 1000)
local manaleechchance = 100
target:remove()
db.query("UPDATE `players` SET `stamina` = 2520 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `offlinetraining_time` = 43200 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `level` = 8 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `health` = " .. life .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `mana` = " .. mana .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `healthmax` = " .. life .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `manamax` = " .. mana .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `cap` = " .. capatual .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `reset` = " .. contagemReset .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_life_leech_amount` = " .. lifeleech .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_life_leech_chance` = " .. lifeleechchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_mana_leech_amount` = " .. manaleech .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_mana_leech_chance` = " .. manaleechchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_critical_hit_chance` = " .. criticalchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_critical_hit_damage` = " .. criticalhit .. " WHERE `name` = '" .. name .. "';")
elseif player:getSkull() ~= 3 and ResetsAtualPlayer >= 20 and player:getLevel() >= resets21mais then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce resetou.")
countReset = player:getStorageValue(Storage.STORAGE_RESET) + 1
countReset3 = player:getStorageValue(112555) + 1
player:setStorageValue(112555, countReset3)
player:teleportTo(player:getTown():getTemplePosition(), true)
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
local target = player
local name = player:getName()
player:setStorageValue(Storage.STORAGE_RESET, countReset)
player:setStorageValue(112555, countReset3)
local contagemReset = player:getStorageValue(Storage.STORAGE_RESET)
local multiplocap = player:getStorageValue(Storage.STORAGE_RESET) * 500
local multiplohpmp = player:getStorageValue(Storage.STORAGE_RESET) * 800
local capatual = 470 + multiplocap
local life = 185 + multiplohpmp
local mana = 90 + multiplohpmp
local criticalchance = math.min(contagemReset * 0.25, 10)
local criticalhit = math.min(contagemReset * 0.25, 10)
local lifeleech = math.min(contagemReset * 25, 1000)
local lifeleechchance = 100
local manaleech = math.min(contagemReset * 25, 1000)
local manaleechchance = 100
target:remove()
db.query("UPDATE `players` SET `stamina` = 2520 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `offlinetraining_time` = 43200 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `level` = 8 WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `health` = " .. life .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `mana` = " .. mana .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `healthmax` = " .. life .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `manamax` = " .. mana .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `cap` = " .. capatual .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `reset` = " .. contagemReset .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_life_leech_amount` = " .. lifeleech .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_life_leech_chance` = " .. lifeleechchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_mana_leech_amount` = " .. manaleech .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_mana_leech_chance` = " .. manaleechchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_critical_hit_chance` = " .. criticalchance .. " WHERE `name` = '" .. name .. "';")
db.query("UPDATE `players` SET `skill_critical_hit_damage` = " .. criticalhit .. " WHERE `name` = '" .. name .. "';")
elseif player:getSkull() ~= 3 and ResetsAtualPlayer <= 10 and player:getLevel() <= resets1a10 then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce ainda nao tem level suficiente para reset e necessario level: " .. resets1a10 .. " ou mais.")
elseif player:getSkull() ~= 3 and ResetsAtualPlayer >= 11 and ResetsAtualPlayer <= 20 and player:getLevel() <= resets11a20 then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce ainda nao tem level suficiente para reset e necessario level: " .. resets11a20 .. " ou mais.")
elseif player:getSkull() ~= 3 and ResetsAtualPlayer >= 21 and player:getLevel() <= resets21mais then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce ainda nao tem level suficiente para reset e necessario level: " .. resets21mais .. " ou mais.")
return false
end
end
resets:register()
 

kiki20072

Mordragor Chronicles
Miembro
Registrado
24 Jun 2023
Mensajes
3
Puntuación de reacción
1
Puntos
125
Ubicación
Patos de Minas
Se realiza en etapas y modifica muchas cosas según los datos de este script, pero hay otras partes; estudiar este script puede ayudarte a tener una idea.
 
shape1
shape2
shape3
shape4
shape5
shape6
Arriba