Ir para conteúdo

Featured Replies

Postado

Ola Pessoal Preciso de Ajuda Com Sistema Reset

Queria Pode Fazer que o Reset Desse Mais Atributos Para os Jogadores
Dano + 3% - Life +5% Mana + 5% ( A CADA RESET )

Uso OTX 2

e o Sistema Reset Nas Soucers !

 

Se Poder me ajudar de Verdade ! Eu Aceito Que me Chame no Pv ( Passarei Meu Whats ) ! Tmj Pessoal Do TibiaKing ♥

Editado por djteteh (veja o histórico de edições)

  • Respostas 25
  • Visualizações 1.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Mateus Robeerto
    Mateus Robeerto

    Tive que pesquisar um pouco e encontrei uma solução que deve funcionar para você, pois utiliza SQLite. Será necessário fazer algumas alterações em sua source e no SQLite. Depois, você pode adicionar o

  • Mateus Robeerto
    Mateus Robeerto

    Cara, eu já enviei um link que tem tudo o que você estava procurando: É só pegar o NPC "Master Reset", o CreatureScript também, as libs... Pegue essas coisas e coloque em seu servidor, é simples.

  • Mateus Robeerto
    Mateus Robeerto

    Há um bom tempo atrás, baixei este servidor Baiak. Peguei esses sistemas e adicionei o meu próprio mapa custom, que não é Baiak nem Global. Testei e estava funcionando bem. Depois, descobri que saiu a

Postado
  Em 13/08/2023 em 00:41, djteteh disse:

Queria Pode Fazer que o Reset Desse Mais Atributos Para os Jogadores
Dano + 3% - Life +5% Mana + 5% ( A CADA RESET )

Cara, eu já enviei um link que tem tudo o que você estava procurando: É só pegar o NPC "Master Reset", o CreatureScript também, as libs... Pegue essas coisas e coloque em seu servidor, é simples.

'-'

Para que serve reset? A cada 1000 leveis você pode recomeçar do inicio, seu char voltará ao level 8, porém você agora terá + 2.0% de dano por reset +10% de exp, +5% ganho de vida e mana ao upar level.

 

 

Obs: Se você quiser fazer ajustes do seu jeito, fique à vontade. É muito simples e fácil de configurar.

 

npc- Master Reset.lua

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)
    local pid = getPlayerGUID(cid)

    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if msgcontains(msg, 'master reset') then
            doPlayerPopupFYI(cid, "Master Reset\n\n(Sobre o Sistema)\n(+)Reset parcial do personagem\n(+)Chance de resetar level mais alto\n(+)Não perde quests,task, dodge e nem critical\n(+)Não perde skills.\n\n                                                      (ATENÇÃO!)\n\nO Master Reset volta o seu personagem ao level 30, reset 0, life e mana inicial!!")
            selfSay('Tendo em vista todas as informações apresentadas, você realmente deseja dar um Master Reset? Esse processo tem um custo de 100 vip coins e é irreversível! Diga {yes} para confirmar.', cid)
            talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
	if doPlayerRemoveItem(cid, 6527,100) then
            --Tira toda a vida e soma + 185
            doCreatureAddHealth(cid, -getCreatureHealth(cid)+185)
            setCreatureMaxHealth(cid,185)
            --Tira toda a mana e soma + 35
            doCreatureAddMana(cid, -getCreatureMana(cid)+35)
            setCreatureMaxMana(cid,35)
            doTeleportThing(cid, getTownTemplePosition(1))
            doRemoveCreature(cid)
            local reset_level = "UPDATE players SET level = 30 WHERE id= " ..pid.. ";"
            local reset_query = "UPDATE players SET reset = 0 WHERE id= " ..pid.. ";"
			local reset_exp = "UPDATE players SET experience = 4200 WHERE id= " ..pid.. ";"
            db.executeQuery(reset_exp)
            db.executeQuery(reset_query)
            db.executeQuery(reset_level)
        else
            selfSay("Você não possui 100 event tokens", cid)
    end

    talkState[talkUser] = 0
end 
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

creaturescrpt

<!-- Reset System -->
	<event type="login" name="RSLogin" script="reset_system.lua"/>

reset_system.lua

 

function onLogin(cid)
	ResetSystem:addBonuses(cid)
	registerCreatureEvent(cid, "RSGainExperience")
	registerCreatureEvent(cid, "RSAdvance")
	return true
end

function onGainExperience(cid, source, experience)
	local resetBonus = ResetSystem:getInfo(cid)
	if (resetBonus and resetBonus.exp_percent > 0) then
		experience = experience * (1.0 + (resetBonus.exp_percent / 100.0))
	end
	return experience
end

 

data/libs/reset.lua

ResetSystem = {
	back_to_level = 500,
	Reset = {
		[1] = {needed_level = 15000, damage_percent = 2},
		[2] = {needed_level = 16000, damage_percent = 4},
		[3] = {needed_level = 16500, damage_percent = 6},
		[4] = {needed_level = 16700, damage_percent = 8},
		[5] = {needed_level = 20000, damage_percent = 10},
		[6] = {needed_level = 20000, damage_percent = 12},
		[7] = {needed_level = 20000, damage_percent = 14},
		[8] = {needed_level = 20000, damage_percent = 16},
		[9] = {needed_level = 20000, damage_percent = 18},
		[10] = {needed_level = 21000, damage_percent = 20},
		[11] = {needed_level = 21000, damage_percent = 22},
		[12] = {needed_level = 21000, damage_percent = 24},
		[13] = {needed_level = 21000, damage_percent = 26},
		[14] = {needed_level = 21000, damage_percent = 28},
		[15] = {needed_level = 22500, damage_percent = 30},
		[16] = {needed_level = 24000, damage_percent = 32},
		[17] = {needed_level = 25500, damage_percent = 34},
		[18] = {needed_level = 27000, damage_percent = 36},
		[19] = {needed_level = 28500, damage_percent = 38},
		[20] = {needed_level = 30000, damage_percent = 40},
		[21] = {needed_level = 31500, damage_percent = 42},
		[22] = {needed_level = 33000, damage_percent = 44},
		[23] = {needed_level = 34500, damage_percent = 46},
		[24] = {needed_level = 36000, damage_percent = 48},
		[25] = {needed_level = 37500, damage_percent = 50},
		[26] = {needed_level = 39000, damage_percent = 52},
		[27] = {needed_level = 40500, damage_percent = 54},
		[28] = {needed_level = 42000, damage_percent = 56},
		[29] = {needed_level = 43500, damage_percent = 58},
		[30] = {needed_level = 45000, damage_percent = 60},
		[31] = {needed_level = 46500, damage_percent = 62},
		[32] = {needed_level = 48000, damage_percent = 64},
		[33] = {needed_level = 49500, damage_percent = 66},
		[34] = {needed_level = 51000, damage_percent = 68},
		[35] = {needed_level = 52500, damage_percent = 70},
		[36] = {needed_level = 54000, damage_percent = 72},
		[37] = {needed_level = 55500, damage_percent = 74},
		[38] = {needed_level = 57000, damage_percent = 76},
		[39] = {needed_level = 58500, damage_percent = 78},
		[40] = {needed_level = 60000, damage_percent = 80},
		[41] = {needed_level = 61500, damage_percent = 82},
		[42] = {needed_level = 63000, damage_percent = 84},
		[43] = {needed_level = 64500, damage_percent = 86},
		[44] = {needed_level = 66000, damage_percent = 88},
		[45] = {needed_level = 67500, damage_percent = 90},
		[46] = {needed_level = 69000, damage_percent = 92},
		[47] = {needed_level = 70500, damage_percent = 94},
		[48] = {needed_level = 72000, damage_percent = 96},
		[49] = {needed_level = 73500, damage_percent = 98},
		[50] = {needed_level = 75000, damage_percent = 100},
		[51] = {needed_level = 80000, damage_percent = 102},
		[52] = {needed_level = 85000, damage_percent = 104},
		[53] = {needed_level = 90000, damage_percent = 106},
		[54] = {needed_level = 100000, damage_percent = 108},
		[55] = {needed_level = 110000, damage_percent = 110},
		[56] = {needed_level = 130000, damage_percent = 112},
		[57] = {needed_level = 150000, damage_percent = 114},
		[58] = {needed_level = 170000, damage_percent = 116},
		[59] = {needed_level = 180000, damage_percent = 118},
		[60] = {needed_level = 200000, damage_percent = 120},
	}
}

function ResetSystem:getCount(pid)
	return getPlayerResets(pid)
end

function ResetSystem:setCount(pid, value)
	setPlayerResets(pid, value)
end

function ResetSystem:addCount(pid)
	self:setCount(pid, self:getCount(pid) + 1)
end

function ResetSystem:getInfo(pid)
	return self.Reset[math.min(self:getCount(pid), #self.Reset)]
end

function ResetSystem:addBonuses(pid)
	local bonus = self:getInfo(pid)
	if (bonus and bonus.damage_percent) then
		setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) + (bonus.damage_percent / 100.0))
	end
end

function ResetSystem:removeBonuses(pid)
	local bonus = self:getInfo(pid)
	if (bonus and bonus.damage_percent) then
		setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) - (bonus.damage_percent / 100.0))
	end
end

function ResetSystem:execute(pid)
	self:removeBonuses(pid)
	local oldMaxHealth = getCreatureMaxHealth(pid)
	local oldMaxMana = getCreatureMaxMana(pid)
	local playerLevel = getPlayerLevel(pid)
	if (playerLevel > self.back_to_level) then
		doPlayerAddExperience(pid, getExperienceForLevel(self.back_to_level) - getPlayerExperience(pid))
		playerLevel = self.back_to_level
	end
		
	self:addCount(pid)
	self:addBonuses(pid)

	setCreatureMaxHealth(pid, oldMaxHealth)
	setCreatureMaxMana(pid, oldMaxMana)
	doCreatureAddHealth(pid, oldMaxHealth)
	doCreatureAddMana(pid, oldMaxMana)

	local bonus = self:getInfo(pid)
	if (bonus) then
		local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. self:getCount(pid) .. "° RESET."
		if (bonus.damage_percent) then
			message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano."
		end
		doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, message)
        doRemoveCreature(pid)
	end
end

 

Talkaction

reset_info.lua

function onSay(cid, words, param)
	if(not checkExhausted(cid, 666, 5)) then
		return true
	end

    doPlayerPopupFYI(cid, "O que é o sistema de resets?\nO sistema de resets consiste em melhorar sua jogabilidade, ou seja, quanto mais resets, mais resistente seu personagem será.\nLembrando que quando resetado, o personagem volta aos leveis iniciais, a cap retorna ao valor equivalente ao nível. Suas skills permanecem as mesmas.\n\nComo resetar e quando resetar?\nPara resetar, use o comando (!resetar). Você pode resetar a partir de 15000 leveis, variando conforme os resetes for aumentando.\n\n* Quanto maior o level que você resetar, mais life e mana terá e quanto mais reset maior o seu dano (esse pode ser um grande diferencial seu para/com seus inimigos).")
    return true
end
    <talkaction access="0-4" words="!reset" event="script" value="reset_info.lua"/>

 

Editado por GM Vortex (veja o histórico de edições)

Postado
  • Autor
  Em 13/08/2023 em 01:51, GM Vortex disse:

Cara, eu já enviei um link que tem tudo o que você estava procurando: É só pegar o NPC "Master Reset", o CreatureScript também, as libs... Pegue essas coisas e coloque em seu servidor, é simples.

'-'

Para que serve reset? A cada 1000 leveis você pode recomeçar do inicio, seu char voltará ao level 8, porém você agora terá + 2.0% de dano por reset +10% de exp, +5% ganho de vida e mana ao upar level.

 

 

Obs: Se você quiser fazer ajustes do seu jeito, fique à vontade. É muito simples e fácil de configurar.

 

npc- Master Reset.lua


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)
    local pid = getPlayerGUID(cid)

    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if msgcontains(msg, 'master reset') then
            doPlayerPopupFYI(cid, "Master Reset\n\n(Sobre o Sistema)\n(+)Reset parcial do personagem\n(+)Chance de resetar level mais alto\n(+)Não perde quests,task, dodge e nem critical\n(+)Não perde skills.\n\n                                                      (ATENÇÃO!)\n\nO Master Reset volta o seu personagem ao level 30, reset 0, life e mana inicial!!")
            selfSay('Tendo em vista todas as informações apresentadas, você realmente deseja dar um Master Reset? Esse processo tem um custo de 100 vip coins e é irreversível! Diga {yes} para confirmar.', cid)
            talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
	if doPlayerRemoveItem(cid, 6527,100) then
            --Tira toda a vida e soma + 185
            doCreatureAddHealth(cid, -getCreatureHealth(cid)+185)
            setCreatureMaxHealth(cid,185)
            --Tira toda a mana e soma + 35
            doCreatureAddMana(cid, -getCreatureMana(cid)+35)
            setCreatureMaxMana(cid,35)
            doTeleportThing(cid, getTownTemplePosition(1))
            doRemoveCreature(cid)
            local reset_level = "UPDATE players SET level = 30 WHERE id= " ..pid.. ";"
            local reset_query = "UPDATE players SET reset = 0 WHERE id= " ..pid.. ";"
			local reset_exp = "UPDATE players SET experience = 4200 WHERE id= " ..pid.. ";"
            db.executeQuery(reset_exp)
            db.executeQuery(reset_query)
            db.executeQuery(reset_level)
        else
            selfSay("Você não possui 100 event tokens", cid)
    end

    talkState[talkUser] = 0
end 
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

creaturescrpt


<!-- Reset System -->
	<event type="login" name="RSLogin" script="reset_system.lua"/>

reset_system.lua

 


function onLogin(cid)
	ResetSystem:addBonuses(cid)
	registerCreatureEvent(cid, "RSGainExperience")
	registerCreatureEvent(cid, "RSAdvance")
	return true
end

function onGainExperience(cid, source, experience)
	local resetBonus = ResetSystem:getInfo(cid)
	if (resetBonus and resetBonus.exp_percent > 0) then
		experience = experience * (1.0 + (resetBonus.exp_percent / 100.0))
	end
	return experience
end

 

data/libs/reset.lua


ResetSystem = {
	back_to_level = 500,
	Reset = {
		[1] = {needed_level = 15000, damage_percent = 2},
		[2] = {needed_level = 16000, damage_percent = 4},
		[3] = {needed_level = 16500, damage_percent = 6},
		[4] = {needed_level = 16700, damage_percent = 8},
		[5] = {needed_level = 20000, damage_percent = 10},
		[6] = {needed_level = 20000, damage_percent = 12},
		[7] = {needed_level = 20000, damage_percent = 14},
		[8] = {needed_level = 20000, damage_percent = 16},
		[9] = {needed_level = 20000, damage_percent = 18},
		[10] = {needed_level = 21000, damage_percent = 20},
		[11] = {needed_level = 21000, damage_percent = 22},
		[12] = {needed_level = 21000, damage_percent = 24},
		[13] = {needed_level = 21000, damage_percent = 26},
		[14] = {needed_level = 21000, damage_percent = 28},
		[15] = {needed_level = 22500, damage_percent = 30},
		[16] = {needed_level = 24000, damage_percent = 32},
		[17] = {needed_level = 25500, damage_percent = 34},
		[18] = {needed_level = 27000, damage_percent = 36},
		[19] = {needed_level = 28500, damage_percent = 38},
		[20] = {needed_level = 30000, damage_percent = 40},
		[21] = {needed_level = 31500, damage_percent = 42},
		[22] = {needed_level = 33000, damage_percent = 44},
		[23] = {needed_level = 34500, damage_percent = 46},
		[24] = {needed_level = 36000, damage_percent = 48},
		[25] = {needed_level = 37500, damage_percent = 50},
		[26] = {needed_level = 39000, damage_percent = 52},
		[27] = {needed_level = 40500, damage_percent = 54},
		[28] = {needed_level = 42000, damage_percent = 56},
		[29] = {needed_level = 43500, damage_percent = 58},
		[30] = {needed_level = 45000, damage_percent = 60},
		[31] = {needed_level = 46500, damage_percent = 62},
		[32] = {needed_level = 48000, damage_percent = 64},
		[33] = {needed_level = 49500, damage_percent = 66},
		[34] = {needed_level = 51000, damage_percent = 68},
		[35] = {needed_level = 52500, damage_percent = 70},
		[36] = {needed_level = 54000, damage_percent = 72},
		[37] = {needed_level = 55500, damage_percent = 74},
		[38] = {needed_level = 57000, damage_percent = 76},
		[39] = {needed_level = 58500, damage_percent = 78},
		[40] = {needed_level = 60000, damage_percent = 80},
		[41] = {needed_level = 61500, damage_percent = 82},
		[42] = {needed_level = 63000, damage_percent = 84},
		[43] = {needed_level = 64500, damage_percent = 86},
		[44] = {needed_level = 66000, damage_percent = 88},
		[45] = {needed_level = 67500, damage_percent = 90},
		[46] = {needed_level = 69000, damage_percent = 92},
		[47] = {needed_level = 70500, damage_percent = 94},
		[48] = {needed_level = 72000, damage_percent = 96},
		[49] = {needed_level = 73500, damage_percent = 98},
		[50] = {needed_level = 75000, damage_percent = 100},
		[51] = {needed_level = 80000, damage_percent = 102},
		[52] = {needed_level = 85000, damage_percent = 104},
		[53] = {needed_level = 90000, damage_percent = 106},
		[54] = {needed_level = 100000, damage_percent = 108},
		[55] = {needed_level = 110000, damage_percent = 110},
		[56] = {needed_level = 130000, damage_percent = 112},
		[57] = {needed_level = 150000, damage_percent = 114},
		[58] = {needed_level = 170000, damage_percent = 116},
		[59] = {needed_level = 180000, damage_percent = 118},
		[60] = {needed_level = 200000, damage_percent = 120},
	}
}

function ResetSystem:getCount(pid)
	return getPlayerResets(pid)
end

function ResetSystem:setCount(pid, value)
	setPlayerResets(pid, value)
end

function ResetSystem:addCount(pid)
	self:setCount(pid, self:getCount(pid) + 1)
end

function ResetSystem:getInfo(pid)
	return self.Reset[math.min(self:getCount(pid), #self.Reset)]
end

function ResetSystem:addBonuses(pid)
	local bonus = self:getInfo(pid)
	if (bonus and bonus.damage_percent) then
		setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) + (bonus.damage_percent / 100.0))
	end
end

function ResetSystem:removeBonuses(pid)
	local bonus = self:getInfo(pid)
	if (bonus and bonus.damage_percent) then
		setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) - (bonus.damage_percent / 100.0))
	end
end

function ResetSystem:execute(pid)
	self:removeBonuses(pid)
	local oldMaxHealth = getCreatureMaxHealth(pid)
	local oldMaxMana = getCreatureMaxMana(pid)
	local playerLevel = getPlayerLevel(pid)
	if (playerLevel > self.back_to_level) then
		doPlayerAddExperience(pid, getExperienceForLevel(self.back_to_level) - getPlayerExperience(pid))
		playerLevel = self.back_to_level
	end
		
	self:addCount(pid)
	self:addBonuses(pid)

	setCreatureMaxHealth(pid, oldMaxHealth)
	setCreatureMaxMana(pid, oldMaxMana)
	doCreatureAddHealth(pid, oldMaxHealth)
	doCreatureAddMana(pid, oldMaxMana)

	local bonus = self:getInfo(pid)
	if (bonus) then
		local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. self:getCount(pid) .. "° RESET."
		if (bonus.damage_percent) then
			message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano."
		end
		doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, message)
        doRemoveCreature(pid)
	end
end

 

Talkaction

reset_info.lua


function onSay(cid, words, param)
	if(not checkExhausted(cid, 666, 5)) then
		return true
	end

    doPlayerPopupFYI(cid, "O que é o sistema de resets?\nO sistema de resets consiste em melhorar sua jogabilidade, ou seja, quanto mais resets, mais resistente seu personagem será.\nLembrando que quando resetado, o personagem volta aos leveis iniciais, a cap retorna ao valor equivalente ao nível. Suas skills permanecem as mesmas.\n\nComo resetar e quando resetar?\nPara resetar, use o comando (!resetar). Você pode resetar a partir de 15000 leveis, variando conforme os resetes for aumentando.\n\n* Quanto maior o level que você resetar, mais life e mana terá e quanto mais reset maior o seu dano (esse pode ser um grande diferencial seu para/com seus inimigos).")
    return true
end

    <talkaction access="0-4" words="!reset" event="script" value="reset_info.lua"/>

 

Nao Tinha Visto Mais Vou tentar e ver se Vai Correr Tudo Certo !

  Em 13/08/2023 em 01:51, GM Vortex disse:

Cara, eu já enviei um link que tem tudo o que você estava procurando: É só pegar o NPC "Master Reset", o CreatureScript também, as libs... Pegue essas coisas e coloque em seu servidor, é simples.

'-'

Para que serve reset? A cada 1000 leveis você pode recomeçar do inicio, seu char voltará ao level 8, porém você agora terá + 2.0% de dano por reset +10% de exp, +5% ganho de vida e mana ao upar level.

 

 

Obs: Se você quiser fazer ajustes do seu jeito, fique à vontade. É muito simples e fácil de configurar.

 

npc- Master Reset.lua


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)
    local pid = getPlayerGUID(cid)

    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if msgcontains(msg, 'master reset') then
            doPlayerPopupFYI(cid, "Master Reset\n\n(Sobre o Sistema)\n(+)Reset parcial do personagem\n(+)Chance de resetar level mais alto\n(+)Não perde quests,task, dodge e nem critical\n(+)Não perde skills.\n\n                                                      (ATENÇÃO!)\n\nO Master Reset volta o seu personagem ao level 30, reset 0, life e mana inicial!!")
            selfSay('Tendo em vista todas as informações apresentadas, você realmente deseja dar um Master Reset? Esse processo tem um custo de 100 vip coins e é irreversível! Diga {yes} para confirmar.', cid)
            talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
	if doPlayerRemoveItem(cid, 6527,100) then
            --Tira toda a vida e soma + 185
            doCreatureAddHealth(cid, -getCreatureHealth(cid)+185)
            setCreatureMaxHealth(cid,185)
            --Tira toda a mana e soma + 35
            doCreatureAddMana(cid, -getCreatureMana(cid)+35)
            setCreatureMaxMana(cid,35)
            doTeleportThing(cid, getTownTemplePosition(1))
            doRemoveCreature(cid)
            local reset_level = "UPDATE players SET level = 30 WHERE id= " ..pid.. ";"
            local reset_query = "UPDATE players SET reset = 0 WHERE id= " ..pid.. ";"
			local reset_exp = "UPDATE players SET experience = 4200 WHERE id= " ..pid.. ";"
            db.executeQuery(reset_exp)
            db.executeQuery(reset_query)
            db.executeQuery(reset_level)
        else
            selfSay("Você não possui 100 event tokens", cid)
    end

    talkState[talkUser] = 0
end 
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

creaturescrpt


<!-- Reset System -->
	<event type="login" name="RSLogin" script="reset_system.lua"/>

reset_system.lua

 


function onLogin(cid)
	ResetSystem:addBonuses(cid)
	registerCreatureEvent(cid, "RSGainExperience")
	registerCreatureEvent(cid, "RSAdvance")
	return true
end

function onGainExperience(cid, source, experience)
	local resetBonus = ResetSystem:getInfo(cid)
	if (resetBonus and resetBonus.exp_percent > 0) then
		experience = experience * (1.0 + (resetBonus.exp_percent / 100.0))
	end
	return experience
end

 

data/libs/reset.lua


ResetSystem = {
	back_to_level = 500,
	Reset = {
		[1] = {needed_level = 15000, damage_percent = 2},
		[2] = {needed_level = 16000, damage_percent = 4},
		[3] = {needed_level = 16500, damage_percent = 6},
		[4] = {needed_level = 16700, damage_percent = 8},
		[5] = {needed_level = 20000, damage_percent = 10},
		[6] = {needed_level = 20000, damage_percent = 12},
		[7] = {needed_level = 20000, damage_percent = 14},
		[8] = {needed_level = 20000, damage_percent = 16},
		[9] = {needed_level = 20000, damage_percent = 18},
		[10] = {needed_level = 21000, damage_percent = 20},
		[11] = {needed_level = 21000, damage_percent = 22},
		[12] = {needed_level = 21000, damage_percent = 24},
		[13] = {needed_level = 21000, damage_percent = 26},
		[14] = {needed_level = 21000, damage_percent = 28},
		[15] = {needed_level = 22500, damage_percent = 30},
		[16] = {needed_level = 24000, damage_percent = 32},
		[17] = {needed_level = 25500, damage_percent = 34},
		[18] = {needed_level = 27000, damage_percent = 36},
		[19] = {needed_level = 28500, damage_percent = 38},
		[20] = {needed_level = 30000, damage_percent = 40},
		[21] = {needed_level = 31500, damage_percent = 42},
		[22] = {needed_level = 33000, damage_percent = 44},
		[23] = {needed_level = 34500, damage_percent = 46},
		[24] = {needed_level = 36000, damage_percent = 48},
		[25] = {needed_level = 37500, damage_percent = 50},
		[26] = {needed_level = 39000, damage_percent = 52},
		[27] = {needed_level = 40500, damage_percent = 54},
		[28] = {needed_level = 42000, damage_percent = 56},
		[29] = {needed_level = 43500, damage_percent = 58},
		[30] = {needed_level = 45000, damage_percent = 60},
		[31] = {needed_level = 46500, damage_percent = 62},
		[32] = {needed_level = 48000, damage_percent = 64},
		[33] = {needed_level = 49500, damage_percent = 66},
		[34] = {needed_level = 51000, damage_percent = 68},
		[35] = {needed_level = 52500, damage_percent = 70},
		[36] = {needed_level = 54000, damage_percent = 72},
		[37] = {needed_level = 55500, damage_percent = 74},
		[38] = {needed_level = 57000, damage_percent = 76},
		[39] = {needed_level = 58500, damage_percent = 78},
		[40] = {needed_level = 60000, damage_percent = 80},
		[41] = {needed_level = 61500, damage_percent = 82},
		[42] = {needed_level = 63000, damage_percent = 84},
		[43] = {needed_level = 64500, damage_percent = 86},
		[44] = {needed_level = 66000, damage_percent = 88},
		[45] = {needed_level = 67500, damage_percent = 90},
		[46] = {needed_level = 69000, damage_percent = 92},
		[47] = {needed_level = 70500, damage_percent = 94},
		[48] = {needed_level = 72000, damage_percent = 96},
		[49] = {needed_level = 73500, damage_percent = 98},
		[50] = {needed_level = 75000, damage_percent = 100},
		[51] = {needed_level = 80000, damage_percent = 102},
		[52] = {needed_level = 85000, damage_percent = 104},
		[53] = {needed_level = 90000, damage_percent = 106},
		[54] = {needed_level = 100000, damage_percent = 108},
		[55] = {needed_level = 110000, damage_percent = 110},
		[56] = {needed_level = 130000, damage_percent = 112},
		[57] = {needed_level = 150000, damage_percent = 114},
		[58] = {needed_level = 170000, damage_percent = 116},
		[59] = {needed_level = 180000, damage_percent = 118},
		[60] = {needed_level = 200000, damage_percent = 120},
	}
}

function ResetSystem:getCount(pid)
	return getPlayerResets(pid)
end

function ResetSystem:setCount(pid, value)
	setPlayerResets(pid, value)
end

function ResetSystem:addCount(pid)
	self:setCount(pid, self:getCount(pid) + 1)
end

function ResetSystem:getInfo(pid)
	return self.Reset[math.min(self:getCount(pid), #self.Reset)]
end

function ResetSystem:addBonuses(pid)
	local bonus = self:getInfo(pid)
	if (bonus and bonus.damage_percent) then
		setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) + (bonus.damage_percent / 100.0))
	end
end

function ResetSystem:removeBonuses(pid)
	local bonus = self:getInfo(pid)
	if (bonus and bonus.damage_percent) then
		setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) - (bonus.damage_percent / 100.0))
	end
end

function ResetSystem:execute(pid)
	self:removeBonuses(pid)
	local oldMaxHealth = getCreatureMaxHealth(pid)
	local oldMaxMana = getCreatureMaxMana(pid)
	local playerLevel = getPlayerLevel(pid)
	if (playerLevel > self.back_to_level) then
		doPlayerAddExperience(pid, getExperienceForLevel(self.back_to_level) - getPlayerExperience(pid))
		playerLevel = self.back_to_level
	end
		
	self:addCount(pid)
	self:addBonuses(pid)

	setCreatureMaxHealth(pid, oldMaxHealth)
	setCreatureMaxMana(pid, oldMaxMana)
	doCreatureAddHealth(pid, oldMaxHealth)
	doCreatureAddMana(pid, oldMaxMana)

	local bonus = self:getInfo(pid)
	if (bonus) then
		local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. self:getCount(pid) .. "° RESET."
		if (bonus.damage_percent) then
			message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano."
		end
		doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, message)
        doRemoveCreature(pid)
	end
end

 

Talkaction

reset_info.lua


function onSay(cid, words, param)
	if(not checkExhausted(cid, 666, 5)) then
		return true
	end

    doPlayerPopupFYI(cid, "O que é o sistema de resets?\nO sistema de resets consiste em melhorar sua jogabilidade, ou seja, quanto mais resets, mais resistente seu personagem será.\nLembrando que quando resetado, o personagem volta aos leveis iniciais, a cap retorna ao valor equivalente ao nível. Suas skills permanecem as mesmas.\n\nComo resetar e quando resetar?\nPara resetar, use o comando (!resetar). Você pode resetar a partir de 15000 leveis, variando conforme os resetes for aumentando.\n\n* Quanto maior o level que você resetar, mais life e mana terá e quanto mais reset maior o seu dano (esse pode ser um grande diferencial seu para/com seus inimigos).")
    return true
end

    <talkaction access="0-4" words="!reset" event="script" value="reset_info.lua"/>

 

sqlite3_prepare_v2(): SQLITE ERROR: no such column: reset (SELECT reset FROM players WHERE id = 3 LIMIT 1)

[Error - CreatureScript Interface]
data/creaturescripts/scripts/reset_system.lua:onLogin
Description:
data/lib/004-database.lua:117: [Result:getDataInt] Result not set!
stack traceback:
        [C]: in function 'error'
        data/lib/004-database.lua:117: in function 'getDataInt'
        data/lib/050-function.lua:55: in function <data/lib/050-function.lua:52>
        (tail call): ?
        data/lib/reset.lua:80: in function 'getInfo'
        data/lib/reset.lua:84: in function 'addBonuses'
        data/creaturescripts/scripts/reset_system.lua:2: in function <data/creaturescripts/scripts/reset_system.lua:1>

 

 

Esse Foi o Error que Deu nao Consigo nem entrar na acc agora !

Postado

Oops, eu tinha esquecido esses detalhes. Qual é a sua versão do TFS? Se o OTX e o TFS forem iguais.

 data/libs/050-function.lua

 

então vá procurar por esta linha

function doPlayerGiveItem(cid, itemid, amount, subType)

adicione abaixo dela

function getPlayerResets(cid)
 local Info = db.getResult("SELECT reset FROM players WHERE id = " .. getPlayerGUID(cid) .. " LIMIT 1")
 if Info:getID() ~= LUA_ERROR then
 local Resets= Info:getDataInt("reset", getPlayerGUID(cid))
 Info:free()
 return Resets
 end
 return LUA_ERROR
 end

 

 

data/libs/004-database.lua

procurar por esta linha

function Result:getDataLong(s)

adicione em cima dela

function Result:getDataInt(s)
	if(self:getID() == -1) then
		error("[Result:getDataInt] Result not set!")
	end

	return result.getDataInt(self:getID(), s)
end

No caso de não haver essa função no arquivo 004-database.lua, você pode adicionar em qualquer lugar e testar!

Editado por GM Vortex (veja o histórico de edições)

Postado
  • Autor
  Em 14/08/2023 em 23:44, GM Vortex disse:

Oops, eu tinha esquecido esses detalhes. Qual é a sua versão do TFS? Se o OTX e o TFS forem iguais.

 data/libs/050-function.lua

 

então vá procurar por esta linha


function doPlayerGiveItem(cid, itemid, amount, subType)

adicione abaixo dela


function getPlayerResets(cid)
 local Info = db.getResult("SELECT reset FROM players WHERE id = " .. getPlayerGUID(cid) .. " LIMIT 1")
 if Info:getID() ~= LUA_ERROR then
 local Resets= Info:getDataInt("reset", getPlayerGUID(cid))
 Info:free()
 return Resets
 end
 return LUA_ERROR
 end

 

 

data/libs/004-database.lua

procurar por esta linha


function Result:getDataLong(s)

adicione em cima dela


function Result:getDataInt(s)
	if(self:getID() == -1) then
		error("[Result:getDataInt] Result not set!")
	end

	return result.getDataInt(self:getID(), s)
end

No caso de não haver essa função no arquivo 004-database.lua, você pode adicionar em qualquer lugar e testar!

OTX

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

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

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo