DE
action

Talkaction para retirar premium points do Site

Por Dennyz Dias, 30 de jan. de 2016 em Scripts

resolvido
script
24
3.9k
Dennyz DiasD
30 de janeiro de 2016 às 17:40

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 Janeiro 30 por Dennyz Dias

julhinhuuJ
30 de janeiro de 2016 às 17:42

Versão? E tfs ?

Editado Janeiro 30 por julhinhokullitz

Dennyz DiasD
30 de janeiro de 2016 às 17:45

Versão? E tfs ?

arrumei amigo 0.3.6 8.60

DanihcvD
30 de janeiro de 2016 às 17:51

Só precisa informar qual a table e qual a clomun responsáveis pelo armazenamento dos premium points. ^^

julhinhuuJ
30 de janeiro de 2016 às 17:53

Só precisa informar qual a table e qual a clomun responsáveis pelo armazenamento dos premium points. ^^

 

Dani manja nisso, me ajudou... ver lá o meu tópico dennyz se for igual aquele funciona. :)

DanihcvD
30 de janeiro de 2016 às 18:06

@, mano, eu me toquei agr q no teu eu ñ botei todas as funções... Acabei de postar lá o script com todas as 3 talkactions (no seu post).

Dennyz DiasD
30 de janeiro de 2016 às 18:14

Só precisa informar qual a table e qual a clomun responsáveis pelo armazenamento dos premium points. ^^

 

premium_points

julhinhuuJ
30 de janeiro de 2016 às 18:17

premium_points

Dani, a tabela dele fica na account, e está escrito igual o meu premium_points.

DanihcvD
30 de janeiro de 2016 às 18:19

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.

Editado Janeiro 30 por Danihcv

Dennyz DiasD
30 de janeiro de 2016 às 18:24

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!

julhinhuuJ
30 de janeiro de 2016 às 18:25

certinhooooo Dan

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

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

DanihcvD
30 de janeiro de 2016 às 18:26

 

 

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

Dennyz DiasD
30 de janeiro de 2016 às 18:28

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

DanihcvD
30 de janeiro de 2016 às 18:30

@@Dennyz Dias, aparece alguma mensagem in-game?
Se sim, qual mensagem?

Dennyz DiasD
30 de janeiro de 2016 às 18:43

@@Dennyz Dias, aparece alguma mensagem in-game?

Se sim, qual mensagem?

não nanhum erro, nem nada in game fala como se fosse msg