Jump to content
Close
jajazenho

Derivado NPC DONATE PARA SITE

Recommended Posts

Iae Galera do TK

bom galera eu hoje vim pedi 1 script de npc que pegue os points do site e troque por items no npc

irei explicar a pessoa tem EX: 100 points no site ai no npc tem 2 items de 50 o player vai comprar 1 item de 50 e serar tirado 50 pts do site e o npc da o item escolhido pelo player e quando o player compra o npc manda 1 mensagem : Recebeu 1 item

Agora se o player escolher 1 item tenta comprar e não tiver points no site o npc manda 1 mensagem : Voce Nao Tem Points


Share this post


Link to post
Share on other sites

Adicione essas funções na sua lib:

Spoiler

function getPoints(cid)
local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
if(res:getID() == -1) then
return 0
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function doPlayerRemovePoints(cid, pontos)
return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getPoints(cid) - pontos .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

 

 

data/npc/scripts cria um arquivo em extensão lua nomeDoArquivo.lua e adicione esse script dentro:

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

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end


local tempo = 20 -- Tempo para falar com o NPC e evitar Spam, caso não tenha os pontos.
local storage = 115818 -- Storage do exhaustino /\
local pontos = 25 -- Quantidade de pontos no site que precisa para comprar os itens, essa quantidade vale para todos itens comprados
local count = 1 -- quantidade de item que vai ganhar

local itens = {
	["item1"] = 16, -- nome e id do item, lembrando sempre em letra minuscúla o nome
	["item2"] = 21,
	["item3"] = 15
}
	
	if exhaustion.check(cid, storage) then
	doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para falar com o NPC novamente.")
	return false
	end

for item, id in pairs(itens) do
		if msgcontains(msg, item) then
			if getPoints(cid) < pontos then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem a quantidade de Pontos para comprar os Itens.")
				exhaustion.set(cid, storage, tempo)
				return false
			else
				doPlayerAddItem(cid, id, count)
				doPlayerRemovePoints(cid, pontos)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um".. itens:gsub("^%l", string.upper)..".")
			end
			return true
		end
	end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

data/npc e cria um arquivo em extensão xml, Nome do NPC.xml e adicione essa script dentro:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Nome do NPC" script="data/npc/scripts/nomeDoArquivo.lua" walkinterval="2000" speed="0" floorchange="0">
	<health now="100" max="100"/>
	<look type="167" head="38" body="79" legs="107" feet="114"/>
	<parameters>
  <parameter key="message_greet" value="Então, eu vendo itens vips, eles são: {Item1}, {Item2} e {Item3}, qual deseja comprar ?. "/>
  			<parameter key="message_farewell" value="Até mais!" />
			<parameter key="message_walkaway" value="Até mais!" />
    </parameters></npc>

 



                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Share this post


Link to post
Share on other sites
2 horas atrás, KotZletY disse:

Adicione essas funções na sua lib:

  Mostrar conteúdo oculto


function getPoints(cid)
local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
if(res:getID() == -1) then
return 0
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function doPlayerRemovePoints(cid, pontos)
return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getPoints(cid) - pontos .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

 

 

data/npc/scripts cria um arquivo em extensão lua nomeDoArquivo.lua e adicione esse script dentro:

  Ocultar conteúdo


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

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end


local tempo = 20 -- Tempo para falar com o NPC e evitar Spam, caso não tenha os pontos.
local storage = 115818 -- Storage do exhaustino /\
local pontos = 25 -- Quantidade de pontos no site que precisa para comprar os itens, essa quantidade vale para todos itens comprados
local count = 1 -- quantidade de item que vai ganhar

local itens = {
	["item1"] = 16, -- nome e id do item, lembrando sempre em letra minuscúla o nome
	["item2"] = 21,
	["item3"] = 15
}
	
	if exhaustion.check(cid, storage) then
	doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para falar com o NPC novamente.")
	return false
	end

for item, id in pairs(itens) do
		if msgcontains(msg, item) then
			if getPoints(cid) < pontos then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem a quantidade de Pontos para comprar os Itens.")
				exhaustion.set(cid, storage, tempo)
				return false
			else
				doPlayerAddItem(cid, id, count)
				doPlayerRemovePoints(cid, pontos)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um".. itens:gsub("^%l", string.upper)..".")
			end
			return true
		end
	end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

data/npc e cria um arquivo em extensão xml, Nome do NPC.xml e adicione essa script dentro:


<?xml version="1.0" encoding="UTF-8"?>
<npc name="Nome do NPC" script="data/npc/scripts/nomeDoArquivo.lua" walkinterval="2000" speed="0" floorchange="0">
	<health now="100" max="100"/>
	<look type="167" head="38" body="79" legs="107" feet="114"/>
	<parameters>
  <parameter key="message_greet" value="Então, eu vendo itens vips, eles são: {Item1}, {Item2} e {Item3}, qual deseja comprar ?. "/>
  			<parameter key="message_farewell" value="Até mais!" />
			<parameter key="message_walkaway" value="Até mais!" />
    </parameters></npc>

 

Onde eu coloco o ID dos itens ? para a pessoa comprar?

 

EDIT: AChei vou ver se vai dar certo

 

Deu quase certo exeto uma coisa, não esta descontando os premium points, acho que o problema é na lib nao sei como add ela, eu criei um arquivo lua e coloquei o que pediu mas creio que esta errado, ou seja eu pego itens infinitamente no npc pois nao esta descontando os premium points e acontece um erro na distro.

 

 

Sem título.png


Edited by jajazenho (see edit history)

Share this post


Link to post
Share on other sites

Na verdade o erro está na forma que a query é executada, você criou uma nova lib para as funções ? Rsrsrs Não precisava, era para adicionar na lib functions ou em qualquer uma lib, mais na 050-functions era pela lógica. Huahsuas, ou adicionar até mesmo no propio script do npc, pedi para add nas libs para você poder usar em outros scripts as funções. Haha! xD

Basta ir na lib e mudar db.executeQuery para db.Query

 



                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Share this post


Link to post
Share on other sites
Em 13/01/2017 ás 01:55, KotZletY disse:

Na verdade o erro está na forma que a query é executada, você criou uma nova lib para as funções ? Não precisava, era para adicionar na lib functions ou em qualquer uma lib, mais na 050-functions era pela lógica. Huahsuas, ou adicionar até mesmo no propio script do npc, pedi para add nas libs para você poder usar em outros scripts as funções. Haha! xD

Basta ir na lib e mudar db.executeQuery para db.Query

 

Agora fiz o que falou adicionei aa lib em lib functions, e mudei db.executeQuery para db.Query da lib que você me passou mas continua n descontando os points 

Sem título.png


Share this post


Link to post
Share on other sites
5 horas atrás, KotZletY disse:

@jajazenho, tente  db.query

Beleza  consegui agora descontou ta quase tudo certo tirando um detalhe, está dando esse erro na distro

Sem título.png


Share this post


Link to post
Share on other sites

@jajazenho perdão, erro meu, troque essa linha:

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um ".. itens:gsub("^%l", string.upper)..".")

por essa:

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um ".. item:gsub("^%l", string.upper)..".")

 



                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Share this post


Link to post
Share on other sites
17 horas atrás, KotZletY disse:

@jajazenho perdão, erro meu, troque essa linha:


doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um ".. itens:gsub("^%l", string.upper)..".")

por essa:


doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um ".. item:gsub("^%l", string.upper)..".")

 

Haha Agora sim Muito Obrigado s2 Rep +

 


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...