RevScript TalkAction Reset System !reset

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
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

Hellgrave Premium
Miembro
LV
13
 
Awards
9
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
 

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38

kiki20072

Hellgrave Premium
Miembro
LV
1
 
Awards
3
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

Hellgrave Premium
Miembro
LV
1
 
Awards
3
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

Hellgrave Premium
Miembro
LV
1
 
Awards
3
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.
 
Arriba