Ir para conteúdo
  • Cadastre-se

Posts Recomendados

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

Link para o post
Compartilhar em outros 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

Link para o post
Compartilhar em outros 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

Editado por jajazenho (veja o histórico de edições)
Link para o post
Compartilhar em outros 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

Link para o post
Compartilhar em outros 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

Link para o post
Compartilhar em outros 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

Link para o post
Compartilhar em outros 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

Link para o post
Compartilhar em outros 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 +

 

Link para o post
Compartilhar em outros sites
  • 2 years later...

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 LeoTK
      Salve galera neste tópico irei postar algumas prints do mapa do servidor para quem queira acompanhar e quem sabe até utilizar de inspiração para mapear o seu NTO.
       
      #Att 11/08/2022

       
       
       
       
      Konoha (Em Desenvolvimento)
       
       
       
       
    • Por DiigooMix
      Como o título já diz, será que alguém possui sprite do hitto e se possível as transformações dele?
    • Por OmegaZero
      Olá gostaria que alguém me ajudasse com uma "scripting" não sei se é pela mesma, seria o seguinte uma determinada arma teria a chance de dar double hit e não sei oque fazer alguem poderia ajudar?

      OBS:não sei se é o local correto se não for mova, desculpe
    • Por Madarasenju
      Olá galera do Tibia King, queria por uns npc's no meu server que não tem função de trade nem nada do tipo, queria que eles só andassem como enfeite, Rep+ Pra quem me ajudar... grato desde já.
    • Por SilenceRoot
      A magia é assim o você usa a a magia e ela ficará ativado por 10 segundos, até que o inimigo lance a primeira magia ou todos de uma vez, quando ele lançar a primeira magia, ele não lhe acertará ou seja esquivando dela, e logo em seguida será teletransportado aleatoriamente ao redor do inimigo que usou.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo