Ir para conteúdo
  • 0

TalkActions e Websites


julhinhuu

Pergunta

Olá boa tarde;

 

Gostaria de uma Talk ou algo do tipo que sacassem os pontos do site e depositassem eles.

 

Exemplo:

- Cabei de receber meus pontos e tem 100, ai in-game o player falaria !sacar 90 ai o comando sacaria esses 90 e diria o que ainda tem no site.

Exemplo da mensagem: Você ainda possui 10 premium points em sua conta no shopping.

 

- O mesmo server para depositar, o jogador não gastou os 90 e gostaria de guarda e não fica no deposito nem carregando com ele.. ai ele falaria !depositar 5, depositaria e ainda falava o seu saldo no site que seria 15.

Exemplo da mensagem: Você acabou de depositar 5 premium points no shopping.

 

- Para ver o saldo no caso o comando seria !saldo, e assim mostraria o total que ele tem no shop do site que é 15.

Exemplo da mensagem: Seu saldo no shopping atual é de 15 Premium points.

 

 

Agradeçeria muito, se tiver algum tutorial aqui do tipo, peço que me mandem o link por favor e obrigado desde já pela ajuda.

 

obs: Espero ter me expressado bem nestas informações.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

 

Eu ainda não compreendi mt bem como funciona esse tfs 1.2... Mas recebi um auxilio, aqui.

 

Testa agr:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
  local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid(cid)..'')
  if(res:getID() == -1) then
     return false
  end
  local ret = res:getDataInt("premium_points")
  res:free()
  return tonumber(ret)
end

function onSay(cid, words, param)
	if param ~= "" then
		if tonumber(param) <= getAccountPoints(cid) then
			player:addItem(cid, pointObj, param)
			db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - param..' WHERE id='.. player:getGuid(cid)..'')
			newPoints = getAccountPoints(cid)
			player:sendCancel(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
		else
			player:sendCancel(cid, "Você não tem tantos premium points assim.")
		end
	else
		player:sendCancel(cid, "Você precisa especificar um valor.")
	end
return true
end

Caso não dê certo, tenta assim:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
  local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid(cid)..'')
  if(res:getID() == -1) then
     return false
  end
  local ret = res:getDataInt("premium_points")
  res:free()
  return tonumber(ret)
end

function onSay(cid, words, param)
	if param ~= "" then
		if tonumber(param) <= player:getAccountPoints(cid) then
			player:addItem(cid, pointObj, param)
			db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints(cid) - param..' WHERE id='.. player:getGuid(cid)..'')
			newPoints = player:getAccountPoints(cid)
			player:sendCancel(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
		else
			player:sendCancel(cid, "Você não tem tantos premium points assim.")
		end
	else
		player:sendCancel(cid, "Você precisa especificar um valor.")
	end
return true
end

 

Mesmo erro que acabei de postar acima Dani. 'RS', se sua tentativas estão dando erro imagina as minhas. 'RSRS'

 

 

Vlw Dani, quem estava fazendo errado era eu... Desculpa e muito obrigado mesmo. Te amo <3 HAHA

Link para o comentário
Compartilhar em outros sites

  • 0

Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions:

*lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2:

local pointObj = 2160 --id do item "points"

function getAccountPoints(player)
  local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'')
  if(res:getID() == -1) then
     return false
  end
  local ret = res:getDataInt("premium_points")
  res:free()
  return tonumber(ret)
end

function onSay(player, words, param)
if (words == '!sacar') then
	if param ~= "" then
		if tonumber(param) <= player:getAccountPoints() then
			player:addItem(pointObj, param)
			db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'')
			newPoints = player:getAccountPoints()
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
		else
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
		end
	else
	player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
	end
elseif (words == '!saldo') then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.')
elseif (words == '!depositar') then
	if param ~= "" then
		if tonumber(param) <= player:getItemCount(pointObj) then
		player:removeItem(pointObj, tonumber(param))
		db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'')
		newPoints = player:getAccountPoints()
		player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
		else
		player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
		end
	else
	player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
	end
end
return true
end
Basta usar uma tag em talkactions.xml apenas se atente a isso na tag:

 

Eu fiz Dani, por isso que não pedi as outras... obrigado irmão te amo de novo hahaha <3

Link para o comentário
Compartilhar em outros sites

  • 0

@, tranquilo então. ^^

sahusahuas

#EDIT: Editei meu post anterior com o script para acrescentar a nova versão do script, sem bug algum.

 

Olá amigo boua tarde pequei esse seu script fiz tudo certinho na hora que fui olhar o saldo ai deu esse erro

 

Usei o comando "!saldo"

[22/02/2016 13:10:13] [Error - TalkAction Interface]
[22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:onSay
[22/02/2016 13:10:13] Description:
[22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:34: attempt to index local 'player' (a number value)
[22/02/2016 13:10:13] stack traceback:
[22/02/2016 13:10:13]     data/talkactions/scripts/buypoints.lua:34: in function <data/talkactions/scripts/buypoints.lua:13>

Usei o comando "!sacar 10"

[22/02/2016 13:14:28] [Error - TalkAction Interface]
[22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:onSay
[22/02/2016 13:14:28] Description:
[22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:19: attempt to index local 'player' (a number value)
[22/02/2016 13:14:28] stack traceback:
[22/02/2016 13:14:28]     data/talkactions/scripts/buypoints.lua:19: in function <data/talkactions/scripts/buypoints.lua:13>

Usei o comando "!depositar 10"

 

[22/02/2016 13:17:53] [Error - TalkAction Interface]
[22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:onSay
[22/02/2016 13:17:53] Description:
[22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:40: attempt to index local 'player' (a number value)
[22/02/2016 13:17:53] stack traceback:
[22/02/2016 13:17:54]     data/talkactions/scripts/buypoints.lua:40: in function <data/talkactions/scripts/buypoints.lua:13>

 

Obs: a tag em talkactions.xml ficou assim

<!-- Retirar points do site para o jogo -->
<talkaction words="!sacar;!saldo;!depositar" event="script" value="buypoints.lua"/>

eskh8n.png

 

tá ai a imagem lá no phpmyadmin

Obs: uso site

Editado por Eduzinhonho
Link para o comentário
Compartilhar em outros sites

  • 0

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'')
  if(res:getID() == -1) then
     return false
  end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function onSay(cid, words, param)
	if (words == '!sacar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then
				doPlayerAddItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	elseif (words == '!saldo') then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.')
	elseif (words == '!depositar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then
				doPlayerRemoveItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	end
return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

 

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'')
  if(res:getID() == -1) then
     return false
  end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function onSay(cid, words, param)
	if (words == '!sacar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then
				doPlayerAddItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	elseif (words == '!saldo') then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.')
	elseif (words == '!depositar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then
				doPlayerRemoveItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	end
return true
end

 

Fucionou sim cara muito obrigado funcionou bastante certo PARABÈNS

 

2yucys8.png

 

se poder min ajudar visita esse outro post que eu fiz lá eu estou com outro problema sobre um script da bike só ler os comentarios que você fica informado e talvez até min ajudará se poder

 

Clique Aqui

 

Muito obrigado por ter ajudado nesse problema

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...