Ir para conteúdo
  • Cadastre-se

Posts Recomendados

4 horas atrás, Semideus disse:

Olá Wolf, seu script está perfeito, porém queria muito utiliza-lo no meu tfs 1.2, haveria uma versão atual dele?

Enviado de meu XT1563 usando Tapatalk
 


a versão 1.2 ta aqui:
 

Spoiler

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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

local 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 = 10, ---- 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 
}

local function addReset(uid)
	local player = Player(uid)
	if player then
		local resets = player:getResets()
		local hp = player:getMaxHealth()
		local resethp = hp*(config.percent/100)
		player:setMaxHealth(resethp)
		local mana = player:getMaxMana()
		local resetmana = mana*(config.percent/100)
		player:setMaxMana(resetmana)
		local playerid = player:getGuid()
		player:remove() 
		db.query("UPDATE `players` SET `resets`="..resets.. + 1",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
		db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
	end
	return true
end 

local function getResets(uid)
	local player = Player(uid)
	local resets = 0
	if player then
		resets = math.max(0, player:getStorageValue(378378))
	end
return resets
end

function creatureSayCallback(cid, type, msg)
	if not npcHandler:isFocused(cid) then
		return false
	end
	local player = Player(cid)
	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
			npcHandler:say('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid)
			npcHandler.topic[cid] = 1
		else
			npcHandler:say('You already reached the maximum reset level!', cid)
		end
	elseif msgcontains(msg, 'yes') and npcHandler.topic[cid] == 1 then
		if player:getLevel() > newminlevel then
			if player:removeMoney(newPrice) then
				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."
				player:popupFYI(msg) 
				npcHandler.topic[cid] = 0
				npcHandler:releaseFocus(cid)
			else
				npcHandler:say('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid)
				npcHandler.topic[cid] = 0
			end
		else
			npcHandler:say('The minimum level for reseting is '..newminlevel..'!', cid)
			npcHandler.topic[cid] = 0
		end
	elseif(msgcontains(msg, 'no')) and isInArray({1}, npcHandler.topic[cid]) then
		npcHandler.topic[cid] = 0
		npcHandler:releaseFocus(cid)
		npcHandler:say('Ok.', cid)
	elseif msgcontains(msg, 'quantity') then
		npcHandler:say('You have a total of '..getResets(cid)..' reset(s).', cid)
		npcHandler.topic[cid] = 0
	end
	return true
end


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

 

 

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
  • 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

Em 3/25/2017 ás 21:40, Semideus disse:

 

Valeeeeu mano, rep+

Se não for incômodo, existe alguma forma de com esse script, eu criar uma porta que só passe com tantos reset's?

 

 

 

só fazer essa checagem aqui na porta: getPlayerStorageValue(uid, 378378) >= numero de resets no script da porta.

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
1 hora atrás, Semideus disse:

ca4a96d48c704a1b999a70ce43a32cae.png

 

Deu esse bug aqui quando tentei ligar o ot com o npc spawnado.

 
acho que agora vai

Spoiler

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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

local 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 = 10, ---- 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 
}

local function addReset(uid)
	local player = Player(uid)
	if player then
		local resets = player:getResets()
		local hp = player:getMaxHealth()
		local resethp = hp*(config.percent/100)
		player:setMaxHealth(resethp)
		local mana = player:getMaxMana()
		local resetmana = mana*(config.percent/100)
		player:setMaxMana(resetmana)
		local playerid = player:getGuid()
		player:remove() 
		db.query("UPDATE `players` SET `resets`=".. resets + 1 ..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
		db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
	end
	return true
end 

local function getResets(uid)
	local player = Player(uid)
	local resets = 0
	if player then
		resets = math.max(0, player:getStorageValue(378378))
	end
return resets
end

function creatureSayCallback(cid, type, msg)
	if not npcHandler:isFocused(cid) then
		return false
	end
	local player = Player(cid)
	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
			npcHandler:say('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid)
			npcHandler.topic[cid] = 1
		else
			npcHandler:say('You already reached the maximum reset level!', cid)
		end
	elseif msgcontains(msg, 'yes') and npcHandler.topic[cid] == 1 then
		if player:getLevel() > newminlevel then
			if player:removeMoney(newPrice) then
				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."
				player:popupFYI(msg) 
				npcHandler.topic[cid] = 0
				npcHandler:releaseFocus(cid)
			else
				npcHandler:say('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid)
				npcHandler.topic[cid] = 0
			end
		else
			npcHandler:say('The minimum level for reseting is '..newminlevel..'!', cid)
			npcHandler.topic[cid] = 0
		end
	elseif(msgcontains(msg, 'no')) and isInArray({1}, npcHandler.topic[cid]) then
		npcHandler.topic[cid] = 0
		npcHandler:releaseFocus(cid)
		npcHandler:say('Ok.', cid)
	elseif msgcontains(msg, 'quantity') then
		npcHandler:say('You have a total of '..getResets(cid)..' reset(s).', cid)
		npcHandler.topic[cid] = 0
	end
	return true
end


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

 

 

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
32 minutos atrás, Semideus disse:

REP+ agora spawnou, porém quando dei reset, ele apareceu o modal que iria deslogar em 3 segundos mas não deslogou e deu esse erro na distro

eaa9d43080634b8f9496876c8bebc881.jpg

troca essa linha
local resets = player:getResets()
por 
local resets = getResets(uid)

e deve estar resolvido :D

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
46 minutos atrás, Semideus disse:

infelizmente ainda não White, fui resetar e deu esse erro na distro

 

reset.jpg

pronto ahuauha

 

Spoiler


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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

local 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 = 10, ---- 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 
}

local function getResets(uid)
	local player = Player(uid)
	local resets = 0
	if player then
		resets = math.max(0, player:getStorageValue(378378))
	end
return resets
end

local function addReset(uid)
	local player = Player(uid)
	if player then
		local resets = getResets(uid)
		local hp = player:getMaxHealth()
		local resethp = hp*(config.percent/100)
		player:setMaxHealth(resethp)
		local mana = player:getMaxMana()
		local resetmana = mana*(config.percent/100)
		player:setMaxMana(resetmana)
		local playerid = player:getGuid()
		player:remove() 
		db.query("UPDATE `players` SET `resets`=".. resets + 1 ..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
		db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
	end
	return true
end 

function creatureSayCallback(cid, type, msg)
	if not npcHandler:isFocused(cid) then
		return false
	end
	local player = Player(cid)
	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
			npcHandler:say('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid)
			npcHandler.topic[cid] = 1
		else
			npcHandler:say('You already reached the maximum reset level!', cid)
		end
	elseif msgcontains(msg, 'yes') and npcHandler.topic[cid] == 1 then
		if player:getLevel() > newminlevel then
			if player:removeMoney(newPrice) then
				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."
				player:popupFYI(msg) 
				npcHandler.topic[cid] = 0
				npcHandler:releaseFocus(cid)
			else
				npcHandler:say('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid)
				npcHandler.topic[cid] = 0
			end
		else
			npcHandler:say('The minimum level for reseting is '..newminlevel..'!', cid)
			npcHandler.topic[cid] = 0
		end
	elseif(msgcontains(msg, 'no')) and isInArray({1}, npcHandler.topic[cid]) then
		npcHandler.topic[cid] = 0
		npcHandler:releaseFocus(cid)
		npcHandler:say('Ok.', cid)
	elseif msgcontains(msg, 'quantity') then
		npcHandler:say('You have a total of '..getResets(cid)..' reset(s).', cid)
		npcHandler.topic[cid] = 0
	end
	return true
end


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

 

 

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
  • 2 weeks later...

 

Eae blz?

Meu ot é TFS version 0.4.1, mapa 8.60

SEGUE O ERRO:

Spoiler

[06/04/2017 16:38:17] [Error - Npc interface] 
[06/04/2017 16:38:17] In a timer event called from: 
[06/04/2017 16:38:17] data/npc/scripts/reseter.lua:onCreatureSay
[06/04/2017 16:38:17] Description: 
[06/04/2017 16:38:17] data/npc/scripts/reseter.lua:61: attempt to call field 'executeQuery' (a nil value)
[06/04/2017 16:38:17] stack traceback:
[06/04/2017 16:38:17]     data/npc/scripts/reseter.lua:61: in function 'addReset'
[06/04/2017 16:38:17]     data/npc/scripts/reseter.lua:87: in function <data/npc/scripts/reseter.lua:85>

  

as modificações que fiz foram somente esseas:

Spoiler

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

 

e esta acontecendo o seguinte, o char continua no mesmo level apos resetar, mana/life estão descendo ao em vez de subir

e eu tambem gostaria muito de saber onde posso habilitar para os resets aparecerem no look do player

Obrigado desde já, Abraço !

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

                                                                    by : GOTD

                                                       :facepalm: esperando voce morrer..

 

 

                                                                 40% Scripter

                                                                 70% Mapper

Link para o post
Compartilhar em outros sites
1 hour ago, gustavoood said:

 

Eae blz?

Meu ot é TFS version 0.4.1, mapa 8.60

SEGUE O ERRO:

  Hide contents

[06/04/2017 16:38:17] [Error - Npc interface] 
[06/04/2017 16:38:17] In a timer event called from: 
[06/04/2017 16:38:17] data/npc/scripts/reseter.lua:onCreatureSay
[06/04/2017 16:38:17] Description: 
[06/04/2017 16:38:17] data/npc/scripts/reseter.lua:61: attempt to call field 'executeQuery' (a nil value)
[06/04/2017 16:38:17] stack traceback:
[06/04/2017 16:38:17]     data/npc/scripts/reseter.lua:61: in function 'addReset'
[06/04/2017 16:38:17]     data/npc/scripts/reseter.lua:87: in function <data/npc/scripts/reseter.lua:85>

  

as modificações que fiz foram somente esseas:

  Hide contents

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

 

e esta acontecendo o seguinte, o char continua no mesmo level apos resetar, mana/life estão descendo ao em vez de subir

e eu tambem gostaria muito de saber onde posso habilitar para os resets aparecerem no look do player

Obrigado desde já, Abraço !

:facepalm: aquele momento que a pessoa não lê nada do tópico.

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

nao achei nada sobre meu error....

Em 27/03/2017 ás 01:12, xWhiteWolf disse:



 

É  até dificil entender .. tu acha q venho aqui perguntar pq eu entendo de lua.. po cara vlw mesmo pela tua ajuda 

sua contribuição foi nota 10 

 

 


 

 

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

                                                                    by : GOTD

                                                       :facepalm: esperando voce morrer..

 

 

                                                                 40% Scripter

                                                                 70% Mapper

Link para o post
Compartilhar em outros sites
On 5/6/2014 at 2:46 PM, xWhiteWolf said:

OBS 1: Se seu server for 8.6 ou maior troque no script.lua as funções db.executeQuery por db.query

 

On 7/7/2014 at 4:12 PM, xWhiteWolf said:

percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)

7 hours ago, gustavoood said:

nao achei nada sobre meu error....

5 hours ago, Radamanthys Wov said:

Já que reviveram o post, teria como colocar a script pra  a cada reset da 1 item diferente ?

faz uma tabela

local itemsbyreset = {

[1] = 2160,
[2] = 2174,
[3] = 2152
}

e aí você adiciona antes de remover o player:
if itemsbyreset[reset] then
   doPlayerAddItem(cid, itemsbyreset[reset], 1)
end

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

 Wolf troquei para db.query db.Query e tbm deixei a que estava antes e mesmo continua no mesmo lvl e nao mostra a quantidade de reset no look 

e aparece isso na distro 

Spoiler

[07/04/2017 04:10:26] [Error - Npc interface] 
[07/04/2017 04:10:26] In a timer event called from: 
[07/04/2017 04:10:26] data/npc/scripts/reseter.lua:onCreatureSay
[07/04/2017 04:10:26] Description: 
[07/04/2017 04:10:26] data/npc/scripts/reseter.lua:61: attempt to call field 'query' (a nil value)
[07/04/2017 04:10:26] stack traceback:
[07/04/2017 04:10:26]     data/npc/scripts/reseter.lua:61: in function 'addReset'
[07/04/2017 04:10:26]     data/npc/scripts/reseter.lua:87: in function <data/npc/scripts/reseter.lua:85


 

 

                                                                    by : GOTD

                                                       :facepalm: esperando voce morrer..

 

 

                                                                 40% Scripter

                                                                 70% Mapper

Link para o post
Compartilhar em outros sites
5 hours ago, gustavoood said:

 Wolf troquei para db.query db.Query e tbm deixei a que estava antes e mesmo continua no mesmo lvl e nao mostra a quantidade de reset no look 

e aparece isso na distro 

  Hide contents

[07/04/2017 04:10:26] [Error - Npc interface] 
[07/04/2017 04:10:26] In a timer event called from: 
[07/04/2017 04:10:26] data/npc/scripts/reseter.lua:onCreatureSay
[07/04/2017 04:10:26] Description: 
[07/04/2017 04:10:26] data/npc/scripts/reseter.lua:61: attempt to call field 'query' (a nil value)
[07/04/2017 04:10:26] stack traceback:
[07/04/2017 04:10:26]     data/npc/scripts/reseter.lua:61: in function 'addReset'
[07/04/2017 04:10:26]     data/npc/scripts/reseter.lua:87: in function <data/npc/scripts/reseter.lua:85


 

 

o.O, que versão é seu servidor? versão do tfs e do client do tibia?

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

Alissow Server, version 0.4.1 (Alissow)  e o mapa é 8.60


 

 

                                                                    by : GOTD

                                                       :facepalm: esperando voce morrer..

 

 

                                                                 40% Scripter

                                                                 70% Mapper

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

 

faz uma tabela

local itemsbyreset = {

[1] = 2160,
[2] = 2174,
[3] = 2152
}

e aí você adiciona antes de remover o player:
if itemsbyreset[reset] then
   doPlayerAddItem(cid, itemsbyreset[reset], 1)
end

Eu tentei aqui mas deu erro na script, como ficaria a script ?

Link para o post
Compartilhar em outros sites
55 minutes ago, Radamanthys Wov said:

Eu tentei aqui mas deu erro na script, como ficaria a script ?

Spoiler

--[[Script made 100% by Nogard and Night Wolf.
   You can feel free to edit anything you want, but don't remove the credits]] 

local itemsbyreset = {
-- [quantidade de resets] = {premio, quantidade}
	[1] = {2160, 1},
	[2] = {2160, 3},
	[3] = {2160, 4},
}


local 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 = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
	maxresets = 50,
	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
		local 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)
		if itemsbyreset[resets+1] then
			doPlayerAddItem(cid, itemsbyreset[resets+1][1], itemsbyreset[resets+1][2])
		end
		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('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())

 

 

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
14 minutos atrás, xWhiteWolf disse:
  Mostrar conteúdo oculto


--[[Script made 100% by Nogard and Night Wolf.
   You can feel free to edit anything you want, but don't remove the credits]] 

local itemsbyreset = {
-- [quantidade de resets] = {premio, quantidade}
	[1] = {2160, 1},
	[2] = {2160, 3},
	[3] = {2160, 4},
}


local 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 = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
	maxresets = 50,
	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
		local 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)
		if itemsbyreset[resets+1] then
			doPlayerAddItem(cid, itemsbyreset[resets+1][1], itemsbyreset[resets+1][2])
		end
		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('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())

 

 

Simplesmente perfeita !! vlw mesmo 

Link para o post
Compartilhar em outros sites

Sera que meu tfs não é compativel ?

                                                                    by : GOTD

                                                       :facepalm: esperando voce morrer..

 

 

                                                                 40% Scripter

                                                                 70% Mapper

Link para o post
Compartilhar em outros sites
2 minutes ago, gustavoood said:

Sera que meu tfs não é compativel ?

me fala qual tfs vc usa.. ele não tá entendendo os comandos de database, parece que você usa tfs 1.x+.
 

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
20 minutos atrás, xWhiteWolf disse:

me fala qual tfs vc usa.. ele não tá entendendo os comandos de database, parece que você usa tfs 1.x+.
 

Quando abro o otserver na primeira linha da distro aparece isso.. [07/04/2017 15:16:04] Alissow Server, version 0.4.1 (Alissow)

acho  é que seja 0.4.1 , mas ta havendo mais um problema semelhando em outra area mas tbm envolvendo esse db.query

não tenho certeza se é por causa desse erro que o system não quer funcionar.. já troquei os db.executequery que tinha lá pelas outras duas formas

porem não deu o mesmo resultado.. 

veja

Spoiler

[Error - GlobalEvent Interface] 
[07/04/2017 15:16:09] data/globalevents/scripts/start.lua:onStartup
[07/04/2017 15:16:09] Description: 
[07/04/2017 15:16:09] data/globalevents/scripts/start.lua:2: attempt to call field 'query' (a nil value)
[07/04/2017 15:16:09] stack traceback:
[07/04/2017 15:16:09]     data/globalevents/scripts/start.lua:2: in function <data/globalevents/scripts/start.lua:1>

 

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

                                                                    by : GOTD

                                                       :facepalm: esperando voce morrer..

 

 

                                                                 40% Scripter

                                                                 70% Mapper

Link para o post
Compartilhar em outros sites

@xWhiteWolf Pode reformular o script para 8.60 (tfs 0.4), fazendo com que o char volte level 8, com os hp respectivo do level e vocação, + 500 hp e mana? Pq por porcentagem não ficou bom, é mais pra baiakao xp 9999999999999

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