Ir para conteúdo
  • Cadastre-se

Posts Recomendados

  • Respostas 187
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Fala galera do TK, hoje vim pra trazer pra vocês um npc criado por mim e pelo Nogard numa madrugada aí para solucionar a dúvida de um cara no suporte. Eu dei uma melhorada no script original, tirei um

cara, aquilo que eu te passei era pra vc substituir no seu script;;; ficando assim:   local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatPa

talkactions/scripts/rankinreset local storage = 378378 -- storage que fica salvo os resets local itens = {2182, 2190, 2456, 2395} -- itens cujas imagens aparecerao (se nao souber oque eh, nao mexa)

Posted Images

6 horas atrás, iTzBrHue3 disse:

mais dessa maneira nao teria como salva quantos master reset o player tem, nao teria como eu cria um contador ?

ai qnd resetar os resets vc tem que usar outra storage pra contar os master reset. Zera os resets com aquele comando e adiciona +1 no storage dos master reset.

 

2 horas atrás, shadauer disse:

Tem como substituir o valor gp por algum outro item? tipo pra resetar o npc pede uma scarab coin. 

tem, troca a função que ele verifica e pede dinheiro pela função getPlayerItemCount(cid, id do item) >= quantidade que vc quer e a função doPlayerRemoveItem(cid, id do item, quantidade).

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
23 horas atrás, xWhiteWolf disse:

ai qnd resetar os resets vc tem que usar outra storage pra contar os master reset. Zera os resets com aquele comando e adiciona +1 no storage dos master reset.

 

tem, troca a função que ele verifica e pede dinheiro pela função getPlayerItemCount(cid, id do item) >= quantidade que vc quer e a função doPlayerRemoveItem(cid, id do item, quantidade).

Fiz isto, de trocar a função que ele verifica, agora ele sumiu. veja, coloquei um steel helmet pra exemplo no item.

 

--[[Script made 100% by Nogard and Night Wolf.
   You can feel free to edit anything you want, but don't remove the credits]] 
   
local config = {
minlevel = 350, --- level inical para resetar
price = 100000, --- preço inicial para resetar
newlevel = 20, --- level após reset
priceByReset = 10000, --- preço acrescentado por reset
percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
maxresets = 5000,
levelbyreset = 10 --- quanto de level vai precisar a mais no próximo reset
}
--- end config

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

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


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


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

if msgcontains(msg, 'reset') then
	if getResets(cid) < config.maxresets then
		selfSay('Deseja resetar? O Valor de Reset custa '..newPrice..' gp\'s! diga {Yes}', cid)
		talkState[talkUser] = 1
	else
		selfSay('You already reached the maximum reset level!', cid)
	end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
	if getPlayerItemCount(cid, 2457)
		selfSay('Nao posso lhe resetar se voce nao tiver pelo menos '..newPrice..' gp\'s para Resetar...', cid)
	elseif getPlayerLevel(cid) < newminlevel then
		selfSay('O Nivel minimo para resetar e '..newminlevel..'!', cid)
	else
		doPlayerRemoveItem(cid, 2457, 1)
		playerid = getPlayerGUID(cid)
		addEvent(function()
			if isPlayer(cid) then
				addReset(cid)
			end
		end, 3000)
		local number = getResets(cid)+1
		local msg ="---[Reset: "..number.."]-- Parabens, voce Resetou, Irei lhe desconectar para aplicar o efeito em 3 segundos, volte por favor."
		doPlayerPopupFYI(cid, msg) 
		talkState[talkUser] = 0
		npcHandler:releaseFocus(cid)
	end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
	talkState[talkUser] = 0
	npcHandler:releaseFocus(cid)
	selfSay('Ok.', cid)
elseif msgcontains(msg, 'Quantidade') then
	selfSay('Voce possui no total '..getResets(cid)..' reset(s).', cid)
	talkState[talkUser] = 0
end

return true
end

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

 

Opa consegui, a syntaxe estava errada e ajeitei a verificação e coloquei algumas variaveis para ficar mais pratico pelo id do item. obrigado!

Link para o post
Compartilhar em outros sites
4 horas atrás, shadauer disse:

Fiz isto, de trocar a função que ele verifica, agora ele sumiu. veja, coloquei um steel helmet pra exemplo no item.

 


--[[Script made 100% by Nogard and Night Wolf.
   You can feel free to edit anything you want, but don't remove the credits]] 
   
local config = {
minlevel = 350, --- level inical para resetar
price = 100000, --- preço inicial para resetar
newlevel = 20, --- level após reset
priceByReset = 10000, --- preço acrescentado por reset
percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
maxresets = 5000,
levelbyreset = 10 --- quanto de level vai precisar a mais no próximo reset
}
--- end config

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

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


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


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

if msgcontains(msg, 'reset') then
	if getResets(cid) < config.maxresets then
		selfSay('Deseja resetar? O Valor de Reset custa '..newPrice..' gp\'s! diga {Yes}', cid)
		talkState[talkUser] = 1
	else
		selfSay('You already reached the maximum reset level!', cid)
	end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
	if getPlayerItemCount(cid, 2457)
		selfSay('Nao posso lhe resetar se voce nao tiver pelo menos '..newPrice..' gp\'s para Resetar...', cid)
	elseif getPlayerLevel(cid) < newminlevel then
		selfSay('O Nivel minimo para resetar e '..newminlevel..'!', cid)
	else
		doPlayerRemoveItem(cid, 2457, 1)
		playerid = getPlayerGUID(cid)
		addEvent(function()
			if isPlayer(cid) then
				addReset(cid)
			end
		end, 3000)
		local number = getResets(cid)+1
		local msg ="---[Reset: "..number.."]-- Parabens, voce Resetou, Irei lhe desconectar para aplicar o efeito em 3 segundos, volte por favor."
		doPlayerPopupFYI(cid, msg) 
		talkState[talkUser] = 0
		npcHandler:releaseFocus(cid)
	end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
	talkState[talkUser] = 0
	npcHandler:releaseFocus(cid)
	selfSay('Ok.', cid)
elseif msgcontains(msg, 'Quantidade') then
	selfSay('Voce possui no total '..getResets(cid)..' reset(s).', cid)
	talkState[talkUser] = 0
end

return true
end

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

 

Opa consegui, a syntaxe estava errada e ajeitei a verificação e coloquei algumas variaveis para ficar mais pratico pelo id do item. obrigado!


a linha

if getPlayerItemCount(cid, 2457)
selfSay('Nao posso lhe resetar se voce nao tiver pelo menos '..newPrice..' gp\'s para Resetar...', cid)

deveria ser:

if getPlayerItemCount(cid, 2457) < 1 then
selfSay('Nao posso lhe resetar se voce nao tiver pelo menos '..newPrice..' gp\'s para Resetar...', cid)
 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Fala mano, coloquei o script e aparentemente deu tudo certo! muito bom! o que eu gostaria de saber é se tem como adicionar um rank reset ou aparecer os resets no look do player

Link para o post
Compartilhar em outros sites
19 minutos atrás, XandimH disse:

Fala mano, coloquei o script e aparentemente deu tudo certo! muito bom! o que eu gostaria de saber é se tem como adicionar um rank reset ou aparecer os resets no look do player

ja era pra aparecer no look do player, vc só não consegue ver qnd dá look em si mesmo, por isso o npc tem uma opção pra vc checar sua quantidade de resets.
Sobre o rank, se nao me engano tem aqui nos comentários mas se nao tiver nao é dificil fazer, é só ordenar pelo storage.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

@xWhiteWolf não aparece nada no Look, somente o level e a vocação. =/

_________________________________________
Corrigido, tudo funcionando, eu que errei aqui, tmj! mto bom! REP+, só estou a procura do rank agora hahaha

Editado por XandimH
reconheci meu erro. (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 27/02/2017 ás 16:02, XandimH disse:

@xWhiteWolf não aparece nada no Look, somente o level e a vocação. =/

_________________________________________
Corrigido, tudo funcionando, eu que errei aqui, tmj! mto bom! REP+, só estou a procura do rank agora hahaha

Como tu fez brother, pra eu dar look em mim, e ver minha quantidade de reset? pelo npc é meio seilá...

Link para o post
Compartilhar em outros sites

Fala ai @shadauer

Eu olho pelo Rank Reset (ps: consegui colocar)

 

em data/talkactions/scripts , crie um arquivo chamado "rankinreset.lua" (sem aspas) e cole esse script dentro:

 

local storage = 378378 -- storage que fica salvo os resets
local itens = {2182, 2190, 2456, 2395} -- itens cujas imagens aparecerao (se nao souber oque eh, nao mexa)

function onSay(cid, words, param, channel)
    local function getRankStorage(cid, value, max, RankName) -- by vodkart
    local str = ""
    str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
    local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
        if (query:getID() ~= -1) then
            k = 1
            repeat
                if k > max then
                    break
                end
            str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
            k = k + 1        
            until not
                query:next()
            end
    return doShowTextDialog(cid, itens[math.random(1, #itens)], str)
    end
    getRankStorage(cid, storage, 10, "Ranking of Resets.Para resetar,vá ao npc reseter no templo.")
return true
end

 

Depois vai no arquivo Talkactions (data/talkactions) e adicione essa tag:

 

<talkaction log="yes" words="!reset" event="script" value="rankinreset.lua"/>
 

 

 

 

Tmj!
 

Link para o post
Compartilhar em outros sites
Em 02/03/2017 ás 11:52, XandimH disse:

Fala ai @shadauer

Eu olho pelo Rank Reset (ps: consegui colocar)

 

em data/talkactions/scripts , crie um arquivo chamado "rankinreset.lua" (sem aspas) e cole esse script dentro:

 

local storage = 378378 -- storage que fica salvo os resets
local itens = {2182, 2190, 2456, 2395} -- itens cujas imagens aparecerao (se nao souber oque eh, nao mexa)

function onSay(cid, words, param, channel)
    local function getRankStorage(cid, value, max, RankName) -- by vodkart
    local str = ""
    str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
    local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
        if (query:getID() ~= -1) then
            k = 1
            repeat
                if k > max then
                    break
                end
            str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
            k = k + 1        
            until not
                query:next()
            end
    return doShowTextDialog(cid, itens[math.random(1, #itens)], str)
    end
    getRankStorage(cid, storage, 10, "Ranking of Resets.Para resetar,vá ao npc reseter no templo.")
return true
end

 

Depois vai no arquivo Talkactions (data/talkactions) e adicione essa tag:

 

<talkaction log="yes" words="!reset" event="script" value="rankinreset.lua"/>
 

 

 

 

Tmj!

No caso, isso é pro cara dar look em si mesmo, e ver a quantidade de reset, certo ? 
 

 

Link para o post
Compartilhar em outros sites

Não bro, esse script cria o rank reset, voce olha o proprio reset e o reset dos outros players em qualquer lugar que estiver.

Link para o post
Compartilhar em outros sites
11 horas atrás, XandimH disse:

Não bro, esse script cria o rank reset, voce olha o proprio reset e o reset dos outros players em qualquer lugar que estiver.

Ah não brother, agradeço vou utilizar mas ... eu queria algo que quando Eu por exemplo desse look em mim mesmo, visse a quantidade de resets que tenho, e nao ir até o npc pra saber.

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 3/11/2017 ás 08:21, dentii disse:

@xWhiteWolf
como adiciono recompensa no seu seu script Reseter?

ao resetar, ganhar "item"(id) ou mais de um item


é só botar doPlayerAddItem(cid, id do item, quantidade) embaixo de setPlayerStorageValue(cid, 378378, resets+1)

Se quiser que cada quantidade de resets dê uns itens diferentes aí precisa montar uma tabela com o numero de resets e a premiação e iterar por ela no código

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Botei antes de voce postar, funfou legal isso :D  
não tem algo que quando Eu por exemplo desse look em mim mesmo, visse a quantidade de resets que tenho, e nao ir até o npc pra saber.

Editado por shadauer (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
57 minutos atrás, shadauer disse:

Botei antes de voce postar, funfou legal isso :D  
não tem algo que quando Eu por exemplo desse look em mim mesmo, visse a quantidade de resets que tenho, e nao ir até o npc pra saber.

vc precisa alterar a source ou refazer todo o sistema de look via lua. Pq no look normal ele não mostra a special description quando vc dá look em si mesmo (configuração da source)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
Em 20/02/2017 ás 16:21, xWhiteWolf disse:

cria um npc que verifica a quantidade que vc tem de resets e te premia por isso, é bem simples. Só ler os comentários

tá bem... como eu consigo criar um npc desse?

Link para o post
Compartilhar em outros sites
5 horas atrás, tataboy67 disse:

tá bem... como eu consigo criar um npc desse?

depende de como vc vai querer mas basicamente seu npc vai ter um storage e uma tabela contendo a quantidade de resets e os premios. Aí vc verifica se existe os resets que você tem e esse storage, esse storage vai estar salvo qual foi a ultima premiação que vc ganhou e ele só deixa pegar sempre a de menos resets pra mais resets. Então se eu tenho 8 resets eu vou ter que pegar a de 1, 3, 5 e 8 (supondo que não é todo nv que ganho prêmio) respectivamente

a tabela vai ser algo assim:
premios = {
[quantidade de resets] = {items = {{2160, 3}, {2152, 100}, {2163, 1}}},
}

if resets > storage then
for i = math.max(1, storage + 1), resets do
    if premios then
      -- tem premios disponiveis pra ele, lidar com isso ou dando só o primeiro ou ja dando todos acumulados
    end
end
end
 

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

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Amigão! Blz? O meu reseter tá estranho, eu peço pra resetar e dá a mensagem que vou ser desconectado em 3 segundos. Quando volto aparece que eu resetei tudo certinho, porém, ele continua no mesmo level. O level não volta. 

 

 

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

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

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


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


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

if msgcontains(msg, 'reset') then
    if getResets(cid) < config.maxresets then
        selfSay('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid)
        talkState[talkUser] = 1
    else
        selfSay('You already reached the maximum reset level!', cid)
    end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
    if getPlayerMoney(cid) < newPrice then
        selfSay('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid)
    elseif getPlayerLevel(cid) < newminlevel then
        selfSay('The minimum level for reseting is '..newminlevel..'!', cid)
    else
        doPlayerRemoveMoney(cid,newPrice)
        playerid = getPlayerGUID(cid)
        addEvent(function()
            if isPlayer(cid) then
                addReset(cid)
            end
        end, 3000)
        local number = getResets(cid)+1
        local msg ="---[Reset: "..number.."]-- You have reseted!  You'll be disconnected in 3 seconds."
        doPlayerPopupFYI(cid, msg) 
        talkState[talkUser] = 0
        npcHandler:releaseFocus(cid)
    end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
    talkState[talkUser] = 0
    npcHandler:releaseFocus(cid)
    selfSay('Ok.', cid)
elseif msgcontains(msg, 'quantity') then
    selfSay('You have a total of '..getResets(cid)..' reset(s).', cid)
    talkState[talkUser] = 0
end

return true
end

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

_____________________________________________________________________

O char é resetado mas volta ao level que já estava antes (level máximo do server). 

Link para o post
Compartilhar em outros sites

@daveic como eu comentei no post original: se seu servidor for 8.6 vc precisa trocar TODOS os db.executeQuery por db.query e dando uma olhada rápido no seu script é fácil perceber que você só trocou um deles 
db.query("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."")
 db.executeQuery("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Participe da conversa

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

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Linus
      Você  pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
       
       
      Testado em tfs 1.1, Versão 10.77
       
       
       
       
      Vá em data/npc/lib/ crie npc_resets.lua :
       



       
      Você pode editar mexendo aqui. no script acima :
      config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 30, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } agora em data/npc/ crie reseter.XML :
       



       
       
       
      Agora em data/npc/scripts crie reseter.lua :
       



       
       
       
      Img : 
       

    • Por gpedro
      Testado: MySQL & SQLite
      Distro: TFS 0.4_SVN & TFS 0.3.6

      MySQL

      ALTER TABLE `players` ADD `resets` INT(11) NOT NULL DEFAULT "0"; SQLite ALTER TABLE players ADD resets INTEGER not null default 0 Adicionando nas sources player.h procure por: uint32_t level; logo abaixo, adicione: uint32_t resets; iologindata.cpp procure por query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`," substitua por: query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `resets`, " procure por player->level = std::max((uint32_t)1, (uint32_t)result->getDataInt("level")); logo abaixo adicione: player->resets = (uint32_t)result->getDataInt("resets"); procure por query << "`maglevel` = " << player->magLevel << ", "; logo abaixo adicione: query << "`resets` = " << player->resets << ", "; players.cpp procure por: s << " (Level " << level << ")"; substitua por: s << " (Level " << level << ") [Reset " << resets << "]"; players.h procure por: void setPromotionLevel(uint32_t pLevel); logo abaixo adicione: uint32_t getResets() { return resets;} void setResets(int32_t amount) { resets += amount; if (resets < 0) {resets = 0;} } luascript.cpp para 0.3.6 static int32_t luaDoPlayerSetIdleTime(lua_State* L); logo abaixo adicione: static int32_t luaGetResets(lua_State* L); static int32_t luaSetResets(lua_State* L); talkactions.xml <talkaction words="!rank;/rank" event="script" value="ranks.lua"/> <talkaction words="!reset;/reset" script="reset.lua"/> ranks.lua
      Créditos: Dark Skyllen, Marcryzius, Mock, Kydrai, Cykotitan, gpedro*.
      * adaptação para 0.4
    • Por Marjer
      Ola! Eu tenho uma duvida!
      Eu tenho 1 mapa 9.60 e ficou 1 tempo online, e assim foi crecendo.. (accs, players, etc..)
      E eu consegui passar para 10.10
      E gostaria de saber se tem como passa a database do 9.60 pro 10.10 ?
      Tem algum jeito que eu possa fazer isso ?
      Eu fiz uns test..
      Quando eu coloquei a database do 9.60 na pasta do 10.10
      Eu abri o executer e aparece isso de primeiro :

      (Uso Distro : The Forgotten Server, version 0.3.7_7_SVN)

      Updating Database Manager
      Updating Database to version 37...
      Updating has been updated to version: 37.
      Updating Database to version 38...
      Updating has been updated to version: 38.
      Optimized database.

      E abriu normalmente...
      Nessa database tem as contas, e depois que abril certinho o mapa.
      Eu tento entra e fala que o password ou o login estao errados.
      E quando eu logo no account manager da esse erro :
      Error during getDataInt(offinetraining_time)
      Error during getDataInt(offinetraining_skill)
      sqlite3_prepare_v2(): SQILITE ERRO: no such table? player_inboxitems (SELECT "pid, "sid", "itemtype", "count", "attributes" FROM "player_inboxitems" WHERE "player_id" = 1 ORDEN BY "Sid Desc;)

      Toda vez que entro no jogo, com personagem, ou account manager, no Server Log aparece isso :
       00:32 You must be logged out for more than 10 minutes to start offline training.
      E quando entro eu ando um pouco, depois eu relogo, vai para o templo, e com a mesma mensagem acima!
      E quando logo, no executer, da 1 erro muitoo grande!
      Irei postar uma foto!
      Foto :



      Entao.. Tem como ?

      ---------------------------
      (Uso Distro : The Forgotten Server, version 0.3.7_7_SVN)
      Entao...
      Eu peguei outra database, porque a da versão 9.60 dava erro!
      Eu fiz varios tests com a database.
      Pelo o que eu procurei e testei, essa database funcionou 100%
      Massss.....
      Meu mapa é Radbr, então tem o sistema de resets.
      Já tentei falar, /installreset, é mesma coisa que nada!
      E quando o player reseta nessa database, da 1 erro!
      Mas sera que é erro no Script ? ( Mas na outra versão 8.60 ea 9.60 funcionava!.... )

      E o player volta pro level 20, e com vida e mana de antes.
      Mas não aparece no look, e da erro no executer :
      Error during get DataInt (reset)  "4 vezes aparece esse erro" e depois...
      Tabela de Resets: Intalada ... [success]
      Error during get DataInt (reset)
      Ai desloga o char.. E quando desloga da esse erro :

      sqlite3_prepare_v2(): SQLITE ERROR: no such column: reset (UPDATE "players" SET "reset" = 1 WHERE "id"=3;)
      Ai loga o char... E da esse erro :
      sqlite3_prepare_v2(): SQLITE ERROR: no such column: reset (SELECT "ID", "reset" FROM "players" ORDEN BY DESC;)

      Tem algum jeito de arruma isso ?
      Eu procurei algumas coisas mas não achei! Talvez alguma SQL query possa ajuda nisso! Talvez..
      Se alguém souber... Por favor me ajuda.
      Irei colocar meu servidor online, e preciso de uma database boa! Nem que não de a do 9.60
      Mas uma que funcione...! E não de erro do sistema de reset!
      Por favor se alguém puder me ajuda, eu agradeço!

      Atenciosamente, Marjer!
       
      EDIT : Foto postada
    • Por Cleiton Felipi
      Bom dia galera!
      Bom eu gostaria de saber se existe algum comando para mysql que reseta o level e mana o life e os skill dos players, sem deletar os char, e o comando que manda todos para o templo.
      Não sei se estou na area correta, se não tiver desculpa.
      Desde já obrigado.
    • Por RenanPhellip
      Eai galera!   
       
       
      Estou precisando de um npc que resete o player. Sendo mais específico preciso que tenha as seguintes funções se possível:
       
      Level minimo para resetar: 250.
      Level máximo: 600.
      Preço: 7 esferas do dragão.
      Manter skills, ml, life/mana e adicionar +25k de life/mana.
      Resete para o level 1.
      E por fim, troque a vocação do player (exemplo: se ele esta na vocação 2 , que vá para a 3).
      Aah, vale lembrar, que irei configurar várias vocações e não somente uma.
       
      Distro Utilizada: tfs 0.4 rev.3884
      Versão Do Servidor: 8.60
       
      Antes de mais nada vale lembrar que procurei em vários tópicos aqui no forum e os que encontrei não consegui modificá-los ao ponto que eu quero.



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo