Ir para conteúdo

Featured Replies

Postado

Ops, desculpe a demora, estava no trabalho. De fato havia um erro na função.

 

Troque-a por:

function onSay(cid, words, param)
	
	--============== PARTE CONFIGURAVEL ====--------------------------		
		
	local preco = 100 -- valor de cada ponto em 'k', ou seja, em 1000gps. Ex.: 10 neste local diz que cada ponto custa 10.000 gps.
	local qtde = 1 -- Quantos pontos serão comprados com cada unidade de preço mostrada acima
	local money = getPlayerMoney(cid)
	local nameDoPlayer = getPlayerName(cid) -- não mude isto
	local nomePonto = "points" -- coloque aqui dentro o nome do ponto, isto aparecerá em todas as frases do script
		
	--============== NÃO MEXA DAQUI PARA BAIXO ====--------------------------	
	if(money >= preco*qtde*1000) then 
		doPlayerRemoveMoney(cid, preco.qtde)
		doSendMagicEffect(getThingPosition(cid), 13)
		doSendAnimatedText(getPlayerPosition(cid), ""..nomePonto.."", TEXTCOLOR_RED)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você comprou " .. qtde .. " dias "..nomePonto..".")	
		addPoints(nameDoPlayer,qtde)
	else
		doPlayerSendCancel(cid, "Você não tem dinheiro suficientes, " .. qtde .. ". "..qtde.." "..nomePonto.." custam "..preco*qtde.." gps.")
		doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
		return true
	end	
		
		
end

Agora vai.

5YkRF3w.gif

 

 

 

 

 

 

CzysZUR.gifytaam6k.png

 

 

  • Respostas 21
  • Visualizações 1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Ops, desculpe a demora, estava no trabalho. De fato havia um erro na função.   Troque-a por: function onSay(cid, words, param) --============== PARTE CONFIGURAVEL ====----------------

Posted Images

Postado
  • Autor
31 minutos atrás, Xagah disse:

Ops, desculpe a demora, estava no trabalho. De fato havia um erro na função.

 

Troque-a por:


function onSay(cid, words, param)
	
	--============== PARTE CONFIGURAVEL ====--------------------------		
		
	local preco = 100 -- valor de cada ponto em 'k', ou seja, em 1000gps. Ex.: 10 neste local diz que cada ponto custa 10.000 gps.
	local qtde = 1 -- Quantos pontos serão comprados com cada unidade de preço mostrada acima
	local money = getPlayerMoney(cid)
	local nameDoPlayer = getPlayerName(cid) -- não mude isto
	local nomePonto = "points" -- coloque aqui dentro o nome do ponto, isto aparecerá em todas as frases do script
		
	--============== NÃO MEXA DAQUI PARA BAIXO ====--------------------------	
	if(money >= preco*qtde*1000) then 
		doPlayerRemoveMoney(cid, preco.qtde)
		doSendMagicEffect(getThingPosition(cid), 13)
		doSendAnimatedText(getPlayerPosition(cid), ""..nomePonto.."", TEXTCOLOR_RED)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você comprou " .. qtde .. " dias "..nomePonto..".")	
		addPoints(nameDoPlayer,qtde)
	else
		doPlayerSendCancel(cid, "Você não tem dinheiro suficientes, " .. qtde .. ". "..qtde.." "..nomePonto.." custam "..preco*qtde.." gps.")
		doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
		return true
	end	
		
		
end

Agora vai.

Opa, deu certo, muito obrigado amigo <3  REP+

Postado

Já coloca uma função balance para eles saberem quantos points tem.

 

Cria um arquivo chamado 'saldoPoints.lua' dentro da pasta 'data > talkactions > scripts' e coloca isto dentro:

function onSay(cid, words, param, channel)

	points = db.getResult("SELECT `name`, `points` FROM `players` WHERE `points` > -1 AND `id` > 6 AND `group_id` < 2 ORDER BY `points` DESC, `name` ASC;")
		
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Saldo atual: '.. query:getDataInt("points") ..' points.')
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Saldo atual: '.. query:getDataInt("points") ..' points.')
	doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE)			
end

E, dentro do arquivo 'talkactions.xml' cole o seguinte:

<talkaction log="yes" words="!saldo" event="script" value="saldoPoints.lua"/>

Aí o 'player' escreve '!saldo' e vê quantos pontos tem. Aí eles não irão ficar te perguntando quantos pontos eles têm (não sei se já tinha esta função).

 

Ainda que tivesse função, é bom colocá-las em 'scripts' apartados pois eventuais mudanças terão suas chances de erro diminuídas.

5YkRF3w.gif

 

 

 

 

 

 

CzysZUR.gifytaam6k.png

 

 

Postado
  • Autor
Em 19/01/2016 19:49:00, Xagah disse:

Já coloca uma função balance para eles saberem quantos points tem.

 

Cria um arquivo chamado 'saldoPoints.lua' dentro da pasta 'data > talkactions > scripts' e coloca isto dentro:


function onSay(cid, words, param, channel)

	points = db.getResult("SELECT `name`, `points` FROM `players` WHERE `points` > -1 AND `id` > 6 AND `group_id` < 2 ORDER BY `points` DESC, `name` ASC;")
		
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Saldo atual: '.. query:getDataInt("points") ..' points.')
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Saldo atual: '.. query:getDataInt("points") ..' points.')
	doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE)			
end

E, dentro do arquivo 'talkactions.xml' cole o seguinte:


<talkaction log="yes" words="!saldo" event="script" value="saldoPoints.lua"/>

Aí o 'player' escreve '!saldo' e vê quantos pontos tem. Aí eles não irão ficar te perguntando quantos pontos eles têm (não sei se já tinha esta função).

 

Ainda que tivesse função, é bom colocá-las em 'scripts' apartados pois eventuais mudanças terão suas chances de erro diminuídas.

Desculpe retornar ao post, mas queria dizer que apareceu um novo erro, e não foi relacionado ao Balance, mas sim ao proprio script de !addpoints que você me passou: 
Fui fazer um teste agora e...: 

Imagem 1 - Comprei 3 points, usando o comando !addpoints 
Imagem 2 - Após comprar os 3 points, tento dar "use" no bau, pra ganhar o respectivo item, porém diz que eu preciso ter 3 points.

Imagem 3 - Erro que apareceu na distro.

 

teste 1.jpg

teste 2.jpg

erro 3.jpg

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

Postado

O erro está dizendo que esta função, a 'addpoints' não está lançada dentro do arquivo '050 - function'.

 

Este arquivo é onde você pode 'criar' funções para serem utilizadas em todos os 'scripts' do server.

 

Quando olhei o 'script' que você me mostrou que a função era usada, por isto cheguei a pensar que já existia.

 

Faça alguns testes, use a função 'addpoints' e, logo na sequencia, confira na distro se houve erros. Se sim, o erro será, muito provavelmente na função que comentamos. Aí, para consertá-la coloque, dentro do arquivo 050 - function as seguintes funções:

function getPoints(cid)
	resp = db.getResult("SELECT `points` FROM `players` WHERE `name` =  "..getPlayerByName(cid)..."")
	if (resp:getID() ~= -1) then
		return resp:getDataInt("points")
	else
		return resp:getID()
	end
end

function addPoints(cid,name,value)
	db.executeQuery("UPDATE 'points' SET 'points' = ".. value .." WHERE `name` =  "..getPlayerByName(cid)..."")
end

Depois reinicie seu servidor e tente novamente.

 

Além disto, aproveitando o momento, olhe dentro da sua tabela 'players' se, de fato, existe alguma coluna chamada 'points' ou se ela está na tabela 'accounts'.

 

Fico no aguardo.

Olá, bom dia de novo. Conversei com vários amigos gringos e analisei o erro, o problema, de fato está nas versões anteriores ao TFS .3884.

 

Não vai ter jeito, ou você compila sem o erro (o que será complicado pois terá que saber onde está) ou, o que penso ser melhor, você utiliza a versão .3884.

 

Isto deveria ter ido para outro comentário!

 

Veja o que pensa aí.

 

Abraço.

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

5YkRF3w.gif

 

 

 

 

 

 

CzysZUR.gifytaam6k.png

 

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo