Ir para conteúdo
  • 0

Talkaction para retirar premium points do Site


Dennyz Dias

Pergunta

Alguem poderia me ajudar em 3 talkaction in game para website que consistem em !

 

- !sacar quantia - Retira tal quantia premium_points em determinado item atraves do jogo !

 

2° - !saldo - mostra quantos points tem no saldo do site in game

 

3° - !depositar quantia - Deposita quantia no saldo in game!

 

TFS 0.3.6

8.60 !

 

Alguem poderia me ajudar nessas talkactions !

 

Obrigado desde-ja :biggrin: :XTibia_smile:

 

REPP ++ :great:

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

Posts Recomendados

  • 0

Então, nesse caso. Aqui vai, @@Dennyz Dias:

Vá em data\talkactions e adicione essa tag ao arquivo talkactions.xml:

<talkaction words="!sacar;!saldo;!depositar" event="script" value="situationpoints.lua"/>

Agora vá em data\talkactions\scripts e crie um arquivo chamado situationpoints.lua e coloque isso dentro:

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) <= 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, "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) <= 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, "Você precisa especificar um valor.")
	end
end
return true
end

*minha unica duvida é quanto às querys... Vamo ver se desse jeito aí funciona sussa.

Link para o comentário
Compartilhar em outros sites

  • 0

Então, nesse caso. Aqui vai, @@Dennyz Dias:

Vá em data\talkactions e adicione essa tag ao arquivo talkactions.xml:

<talkaction words="!sacar;!saldo;!depositar" event="script" value="situationpoints.lua"/>

Agora vá em data\talkactions\scripts e crie um arquivo chamado situationpoints.lua e coloque isso dentro:

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) <= 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, "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) <= 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, "Você precisa especificar um valor.")
	end
end
return true
end

*minha unica duvida é quanto às querys... Vamo ver se desse jeito aí funciona sussa.

certinhooooo Dan

100% cara shoooow so 1 coisa tera como add !depositar tambem!

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

so 1 coisa tera como add !depositar tambem!

Não entendi direito o q vc quis dizer... sahusahu
Mas eu já botei pra que o player possa usar:
!sacar QUANTIA
!saldo
!depositar QUANTIA

Link para o comentário
Compartilhar em outros sites

  • 0

Já está com a tag, já testou?

Sim mano ja testei mais o depositar naum pegou nao da erro so nao pega ele fala default

Não entendi direito o q vc quis dizer... sahusahu

Mas eu já botei pra que o player possa usar:

!sacar QUANTIA

!saldo

!depositar QUANTIA

 

 

so depositar naum pego mano

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...