Ir para conteúdo
  • Cadastre-se

[Pedido] NPC que transfira pontos físicos no jogo em pontos no site


Posts Recomendados

Bom dia, gostaria de saber se alguém consegue fazer um NPC que remova pontos no jogo id 9970 e enviei para o site como premium points, exemplo um jogador tem 100 points no jogo, ele fala com o NPC para transferir o NPC remove os pontos físicos do jogador e envia para a table premium points da conta do jogador.

x1fCxnI.png

Link para o post
Compartilhar em outros sites

Não entendi muito bem seu pedido.. Como assim pontos físicos?
Você quer dizer tipo, remover o item do jogador(ID: 9970) e então enviar X points para o site?
Seria isso?

Se remover 10 pontos in-game, vai 10 pontos para site, basicamente seria isso?

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites
52 minutos atrás, vankk disse:

Não entendi muito bem seu pedido.. Como assim pontos físicos?
Você quer dizer tipo, remover o item do jogador(ID: 9970) e então enviar X points para o site?
Seria isso?

Se remover 10 pontos in-game, vai 10 pontos para site, basicamente seria isso?

 

Sim @vankk, isso mesmo! será que é possível?

x1fCxnI.png

Link para o post
Compartilhar em outros sites

Tudo nessa vida é possível, basta querer.. Qualquer coisa faça que o item 9970, seja clicável e que cada item, de um point no website.
 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
 
local k = {
	item = 9970
} 
 
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 function getCount(s)
	local b, e = s:find('%d+')
	return b and e and math.min(4294967295, tonumber(s:sub(b, e))) or -1
end

function creatureSayCallback(cid, type, msg)
	if not npcHandler:isFocused(cid) then
		return false
	elseif msgcontains(msg, 'transfer') then
		npcHandler:say('Please tell me the amount that you want change.', cid)
		Topic[cid] = 1
		if Topic[cid] == 1 then
			if getCount(msg) == -1 then
				npcHandler:say('Please tell me the amount that you want change.', cid)
				Topic[cid] = nil
			else
				count[cid] = getCount(msg)
				npcHandler:say('Do you want change ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. ' premium points in the website?', cid)
				Topic[cid] = 2
			end
		end
	elseif Topic[cid] == 2 and msgcontains(msg, 'yes') then
		if doPlayerRemoveItem(cid, k.item, count[cid]) then
			local p = "UPDATE `accounts` SET `premium_points` = `premium_points` + ".. count[cid] .." where id="..getPlayerAccountId(cid)
			db.executeQuery(p)
			npcHandler:say('Very well. You have transfered ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. '.', cid)
			Topic[cid] = nil
		else
			npcHandler:say('You do not have the items.', cid)
			Topic[cid] = nil
		end
	elseif Topic[cid] == 2 and msgcontains(msg, 'no') then
		npcHandler:say('Ok then.', cid)
		Topic[cid] = nil
	end
	return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

E se tiver funcionando atualiza as mensagens, pq as falas do npc está bem feias, eu acho.. HAHAHA!

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

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites

@vankk Quando ele pede pra eu falar a quantidade de pontos que eu quero transferir eu falo e ele não responde e da o seguinte erro no distro:

Vl7Gxm4.png

 

19:16 Transferir Pontos: Por favor diga-me quantos pontos quer transferir para o site.
19:16 GM Vy'n [661]: 100

Editado por One Punch Man (veja o histórico de edições)

x1fCxnI.png

Link para o post
Compartilhar em outros sites

Por isso que odeio npcs da versão 0.4

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

local talkState = {}
 
local k = {
	item = 9970
} 
 
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 function getCount(s)
	local b, e = s:find('%d+')
	return b and e and math.min(4294967295, tonumber(s:sub(b, e))) or -1
end

function creatureSayCallback(cid, type, msg)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	if not npcHandler:isFocused(cid) then
		return false
	elseif msgcontains(msg, 'transfer') then
		npcHandler:say('Please tell me the amount that you want change.', cid)
		talkState[talkUser] = 1
		if talkState[talkUser] == 1 then
			if getCount(msg) == -1 then
				npcHandler:say('Please tell me the amount that you want change.', cid)
				talkState[talkUser] = nil
			else
				count[cid] = getCount(msg)
				npcHandler:say('Do you want change ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. ' premium points in the website?', cid)
				talkState[talkUser] = 2
			end
		end
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'yes') then
		if doPlayerRemoveItem(cid, k.item, count[cid]) then
			local p = "UPDATE `accounts` SET `premium_points` = `premium_points` + ".. count[cid] .." where id="..getPlayerAccountId(cid)
			db.executeQuery(p)
			npcHandler:say('Very well. You have transfered ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. '.', cid)
			talkState[talkUser] = nil
		else
			npcHandler:say('You do not have the items.', cid)
			talkState[talkUser] = nil
		end
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'no') then
		npcHandler:say('Ok then.', cid)
		talkState[talkUser] = nil
	end
	return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites

Não foi seu, foi meu mesmo, eu esqueço sempre de configurar o talkState mesmo. Testa e veja o que da.

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites

@vankk

Agora quando eu falo hi > transfer acontece o seguinte:

19:29 Transferir Pontos: Please tell me the amount that you want change.
19:29 Transferir Pontos: Please tell me the amount that you want change.
19:29 GM Vy'n [661]: 100

 

Ele manda a mensagem duas vezes ai eu mando a quantidade ele não fala mais nada, e não da nenhum erro na distro.

Editado por One Punch Man (veja o histórico de edições)

x1fCxnI.png

Link para o post
Compartilhar em outros sites
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local talkState = {}
 
local k = {
	item = 9970
} 
 
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 function getCount(s)
	local b, e = s:find('%d+')
	return b and e and math.min(4294967295, tonumber(s:sub(b, e))) or -1
end

function creatureSayCallback(cid, type, msg)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	if not npcHandler:isFocused(cid) then
		return false
	elseif msgcontains(msg, 'transfer') then
		npcHandler:say('Please tell me the amount that you want change.', cid)
		talkState[talkUser] = 1
		if talkState[talkUser] == 1 then
			if getCount(msg) == -1 then
				count[cid] = getCount(msg)
				npcHandler:say('Do you want change ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. ' premium points in the website?', cid)
				talkState[talkUser] = 2
			end
		end
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'yes') then
		if doPlayerRemoveItem(cid, k.item, count[cid]) then
			local p = "UPDATE `accounts` SET `premium_points` = `premium_points` + ".. count[cid] .." where id="..getPlayerAccountId(cid)
			db.executeQuery(p)
			npcHandler:say('Very well. You have transfered ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. '.', cid)
			talkState[talkUser] = nil
		else
			npcHandler:say('You do not have the items.', cid)
			talkState[talkUser] = nil
		end
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'no') then
		npcHandler:say('Ok then.', cid)
		talkState[talkUser] = nil
	end
	return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites

@vankk

Agora ele mandou apenas 1 mensagem mas quando eu falo a quantidade da esse erro e não acontece nada:

SCLoND5.png

Editado por One Punch Man (veja o histórico de edições)

x1fCxnI.png

Link para o post
Compartilhar em outros sites

@xWhiteWolf meu caro lobo, ajude essa pobre alma chamada vankk que é horrível com npcs do TFS 0.4, noix.

 

btw, tenta isso pela ultima vez.

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

local talkState = {}
 
local k = {
	item = 9970
} 
 
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 function getCount(s)
	local b, e = s:find('%d+')
	return b and e and math.min(4294967295, tonumber(s:sub(b, e))) or -1
end

function creatureSayCallback(cid, type, msg)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	if not npcHandler:isFocused(cid) then
		return false
	elseif msgcontains(msg, 'transfer') then
		npcHandler:say('Please tell me the amount that you want change.', cid)
		talkState[talkUser] = 1
		if talkState[talkUser] == 1 then
			if getCount(msg) > 1 then
				count[cid] = getCount(msg)
				npcHandler:say('Do you want change ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. ' premium points in the website?', cid)
				talkState[talkUser] = 2
			else
				npcHandler:say('Please tell me the amount that you want change.', cid)
				talkState[talkUser] = nil
			end
		end
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'yes') then
		if doPlayerRemoveItem(cid, k.item, count[cid]) then
			local p = "UPDATE `accounts` SET `premium_points` = `premium_points` + ".. count[cid] .." where id="..getPlayerAccountId(cid)
			db.executeQuery(p)
			npcHandler:say('Very well. You have transfered ' .. count[cid] .. ' '.. getItemNameById(k.item) ..' for ' .. count[cid] .. '.', cid)
			talkState[talkUser] = nil
		else
			npcHandler:say('You do not have the items.', cid)
			talkState[talkUser] = nil
		end
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'no') then
		npcHandler:say('Ok then.', cid)
		talkState[talkUser] = nil
	end
	return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites
count[cid] = getCount(msg)

/\   to indo pra aula agr, depois eu ajudo.. mas acho q o problema é essa parte aqui

e outra: TFS 0.4 é db.query em vez de db.executeQuery

 

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

Depois da uma ajudada nesse tópico ai, pq 0.4 fede

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites

@vankk Esse ultimo não foi também não deu erro no distro mas não funcionou, se o wolf fizer eu tento pra ver se pega.

x1fCxnI.png

Link para o post
Compartilhar em outros sites
Spoiler

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

	local function getCount(s)
		local b = s:match('%d+')
		return b and math.min(4294967295, b) or false
	end

----
	local item = 9970

	if msgcontains(msg, 'transfer') then
			selfSay('Please tell me the amount that you want change.', cid)
			talkState[talkUser] = 1
	elseif(getCount(msg) and talkState[talkUser] == 1) then
		local count = getCount(msg)
		selfSay('Do you want change ' .. count .. ' '.. getItemNameById(item) ..' for ' .. count .. ' premium points in the website?', cid)
		talkState[talkUser] = 2
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'yes') then
		if getPlayerItemCount(cid, item) >= count then
			if doPlayerRemoveItem(cid, item, count) then
				db.query("UPDATE `accounts` SET `premium_points` = `premium_points` + ".. count .." where id="..getPlayerAccountId(cid))
				selfSay('Very well. You have transfered ' .. count .. ' '.. getItemNameById(item) ..' for ' .. count .. ' premium points.', cid)
				talkState[talkUser] = 0
				npcHandler:releaseFocus(cid)
			else
				selfSay('You do not have the items.', cid)
				talkState[talkUser] = 0
				npcHandler:releaseFocus(cid)
			end
		else
			selfSay('You do not have the items.', cid)
			talkState[talkUser] = 0
			npcHandler:releaseFocus(cid)
		end
	elseif talkState[talkUser] == 2 and msgcontains(msg, 'no') then
		selfSay('Ok then.', cid)
		talkState[talkUser] = 0
		npcHandler:releaseFocus(cid)
	end
return true
end

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

 

tenta assim

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 Bom dia, eu coloquei o script que passou e agora ele não sumona o npc no servidor e da esse erro na distro:

qh2quha.png

x1fCxnI.png

Link para o post
Compartilhar em outros sites
<npc name="Transfer" script="data/npc/scripts/transfer.lua" access="5" lookdir="1">
<health now="1000" max="1000"/>
<look type="134" head="39" body="113" legs="38" feet="0" addons="3"/>
    <parameters>
        <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been wondering if you would never appear.. Do you want to {transfer} your points?" />
    </parameters>
</npc>

deixa o xml assim

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

cara, que erro bizarro.. qnd vc abre o sv dá algum erro relacionado ao npc? pq o erro q tá falando é como se tentasse carregar ele no sv e ele não existisse

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo