Postado Janeiro 19, 2016 9 anos 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. The Last Man Standing - 100% funcional
Postado Janeiro 19, 2016 9 anos 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 REP+
Postado Janeiro 19, 2016 9 anos 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. The Last Man Standing - 100% funcional
Postado Janeiro 21, 2016 9 anos 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. Editado Janeiro 21, 2016 9 anos por poetacarente (veja o histórico de edições)
Postado Janeiro 22, 2016 9 anos 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 Janeiro 22, 2016 9 anos por Xagah (veja o histórico de edições) The Last Man Standing - 100% funcional
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.