Ir para conteúdo
  • Cadastre-se

[PEDIDO] Desbugar script de POINTS


Posts Recomendados

P Points System

Como funciona :

O sistema funciona como uma recompensa ao player por ficar online por um certo tempo. O player, ao ficar online por um certo intervalo de tempo programado no código, receberá uma quantidade de pontos "P" a qual também se pode alterar.

O objetivo foi fazer com que os players se sintam incentivados a ficar online por um maior período de tempo para que recebam tais moedas. Essa é, definitivamente, uma forma fácil de se alcançar um número maior de players online, já que a ideia foi retirada de um MMORPG online de grande sucesso.

Como utilizar :

Como o sistema tem como foco dar uma recompensa ao player, no caso pontos P, estes, podem ser utilizados no comercio, em npcs, ou até mesmo na entrada de locais. Sua sintaxe é muito maleável e se encaixa em quaquer requisito desejado.

Instalação :

Primeiramente, execute a seguinte QUERY em seu banco de dados :

Em seguida, crie um arquivo com a extensão .lua chamado "points.lua" em "data/creaturescripts/scripts" e adicione o código abaixo :

Ainda em creaturescripts, abra o arquivo "creaturescripts.xml" e adicione a seguinte TAG:

Agora, em "data/globalevents/script" crie um arquivo com a extensão .lua também chamado "points.lua" e cole o seguinte código :

E em "globalevents.xml" cole a seguinte TAG:

Em seguida vá em "data/talkactions/scripts", crie um arquivo com extensão .lua chamado "points.lua" e adicione o seguinte código :

E em "talkactions.xml" adicione a TAG :

Para finalizar, vá em "data/lib/050-function.lua" e na última linha, adicione as funções abaixo :

Fim, o sistema está instalado.

Como configurar :

A parte da configuração é a mais fácil, apenas edite :

Quer utilizar o sistema em um npc, ou action, ou algum outro sistema e não sabe como? Simples, apenas use as seguintes funções :

getPoints(cid) A função retorna a quantidade de pontos do player.

doPlayerAddPoints(cid, quant) A função adiciona a quantidade(quant) de pontos ao player.

doPlayerRemovePoints(cid, quant) A função remove a quantidade(quant) de pontos do player.

Ilustração :

FOTO

Aí está galera, espero que gostem, e, para os preguiçosos, disponibilizei o download do sistema completo:

Download Completo -> DOWNLOAD

Scan download -> Scan

Abraços.

Bom, instalei o sistema e tentei até o baixado, mas está com erro na hora de adicionar pontos na conta do jogador, aparece isso:

 

[20/05/2015 22:18:19] [Error - GlobalEvent Interface]

[20/05/2015 22:18:19] data/globalevents/scripts/pointsperhour.lua:onThink

[20/05/2015 22:18:19] Description:

[20/05/2015 22:18:19] data/lib/050-function.lua:810: attempt to call field 'executeQuery' (a nil value)

[20/05/2015 22:18:19] stack traceback:

[20/05/2015 22:18:19]     data/lib/050-function.lua:810: in function 'doPlayerAddPoints'

[20/05/2015 22:18:19]     data/globalevents/scripts/pointsperhour.lua:15: in function 'givePoints'

[20/05/2015 22:18:19]     data/globalevents/scripts/pointsperhour.lua:24: in function <data/globalevents/scripts/pointsperhour.lua:22>

[20/05/2015 22:18:19] [Error - GlobalEvents::think] Couldn't execute event: points 

eu adicionei o que pede no sql, como podem ver a seguir:

zEC6GTy.jpg

Não sei se é erro no script ou algo que eu fiz, porém segui como fala ali no tutorial e está dando esse erro.. se for bug no script peço que arrumem pra mim por favor!

Já que estou aqui, gostaria de pedir para que mudasse o script para que, ao invés de acrescentar pontos na CONTA, acrescentasse nos PLAYERS!

Vi esse sistema e adorei, até elaborei umas coisas com ele aqui já huehue, então desde já.. muito, muito grato mesmo!

@ATUALIZADO

[20/05/2015 22:18:19] [Error - GlobalEvent Interface]

[20/05/2015 22:18:19] data/globalevents/scripts/pointsperhour.lua:onThink

[20/05/2015 22:18:19] Description:

[20/05/2015 22:18:19] data/lib/050-function.lua:810: attempt to call field 'executeQuery' (a nil value)

[20/05/2015 22:18:19] stack traceback:

[20/05/2015 22:18:19]     data/lib/050-function.lua:810: in function 'doPlayerAddPoints'

[20/05/2015 22:18:19]     data/globalevents/scripts/pointsperhour.lua:15: in function 'givePoints'

[20/05/2015 22:18:19]     data/globalevents/scripts/pointsperhour.lua:24: in function <data/globalevents/scripts/pointsperhour.lua:22>

[20/05/2015 22:18:19] [Error - GlobalEvents::think] Couldn't execute event: points

Troca 'db.executeQuery' para 'db.query' ou add isso em compat.lua/global.lua.

 

 

db.executeQuery = db.query

 

se ainda não der onde tiver  'db.executeQuery' por 'db.escapeString'

 

 

substitui o db.executeQuery por db.escapeString  no 050-function.lua (apenas na parte que afeta esse sistema) e não está dando nenhum bug no distro, mas também não está dando points nem para o player e nem para a conta.. ;x

é outro sistema que quero usar em meu server hueh

Parte do 050-function.lua que afeta o script de points:

function getPoints(cid)
local res = db.getResult('select `p_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("p_points")
res:free()
return tonumber(ret)
end

function doPlayerAddPoints(cid, quant)
return db.escapeString("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) + quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

function doPlayerRemovePoints(cid, quant)
return db.escapeString("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) - quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end    
    

http://www.tibiaking.com/forum/topic/57409-pedido-desbugar-script-de-points/

Editado por biel.stocco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

config = {
       p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
       p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}          
    function givePoints(cid, amount)
 if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
    doPlayerAddPoints(cid, amount)
  doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. amount .." p points. Now you have ".. getPoints(cid) .." p points in your account. Your timer was reseted.")   
  doCreatureSetStorage(cid, 1219, 0)
  doCreatureSetStorage(cid, 1219, os.time())
 end
 return true
end 
function onThink(interval)
for _, pid in ipairs(getPlayersOnline()) do
givePoints(pid, config.p_points)
end
return true
end

--------------------

function getPoints(cid)
local res = db.getResult('select `p_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
if (res:getID() == -1) then
return false
end
return res:getDataInt("p_points")
end

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
config = {
       p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
       p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}          
    function givePoints(cid, amount)
 if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
    doPlayerAddPoints(cid, amount)
  doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. amount .." p points. Now you have ".. getPoints(cid) .." p points in your account. Your timer was reseted.")   
  doCreatureSetStorage(cid, 1219, 0)
  doCreatureSetStorage(cid, 1219, os.time())
 end
 return true
end 
function onThink(interval)
for _, pid in ipairs(getPlayersOnline()) do
givePoints(pid, config.p_points)
end
return true
end

 

 

continua do mesmo jeito, não está adicionando os points

Editado por biel.stocco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

mas se vc usa o comando !ppoints mostra qntos pontos vc tem?

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

mas se vc usa o comando !ppoints mostra qntos pontos vc tem?

 

 

é pra mostrar..

talkactions/scripts/pointsperhour.lua

function onSay(cid, words, param, channel)
local getP = getPoints(cid)
doPlayerPopupFYI(cid, "You have ".. getP .." P points.")
return true
end

 

 

    <talkaction words="!ppoints" event="script" value="pointsperhour.lua"/>

ps: na database está constando tudo com 0 points tbm

Link para o post
Compartilhar em outros sites

tenta usar o script desse jeito la no globalevents

function pegarPoints(acc)
local info = db.getResult("SELECT `p_points` FROM `accounts` WHERE `id` = "..acc)
return info:getDataInt("p_points") < 0 and 0 or info:getDataInt("p_points")
end
function onThink(interval)
local config = {
       p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
       p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
} 
for _, cid in ipairs(getPlayersOnline()) do
if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
local dono = getPlayerAccountId(cid)
db.executeQuery("UPDATE `accounts` SET `p_points` = " .. (pegarPoints(dono) + config.p_points) .. " WHERE `id` = "..dono)
doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. config.p_points .." p points. Now you have ".. getPoints(cid) .." p points in your account. Your timer was reseted.")   
doCreatureSetStorage(cid, 1219, 0)
doCreatureSetStorage(cid, 1219, os.time())
end
end
return true
end
Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

 

tenta usar o script desse jeito la no globalevents

function pegarPoints(acc)
local info = db.getResult("SELECT `p_points` FROM `accounts` WHERE `id` = "..acc)
return info:getDataInt("p_points") < 0 and 0 or info:getDataInt("p_points")
end
function onThink(interval)
local config = {
       p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
       p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
} 
for _, cid in ipairs(getPlayersOnline()) do
if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
local dono = getPlayerAccountId(cid)
db.executeQuery("UPDATE `accounts` SET `p_points` = " .. (pegarPoints(dono) + config.p_points) .. " WHERE `id` = "..dono)
doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. config.p_points .." p points. Now you have ".. getPoints(cid) .." p points in your account. Your timer was reseted.")   
doCreatureSetStorage(cid, 1219, 0)
doCreatureSetStorage(cid, 1219, os.time())
end
end
return true
end

db.executeQuery

[21/05/2015 13:56:07] [Error - GlobalEvent Interface]
[21/05/2015 13:56:07] data/globalevents/scripts/pointsperhour.lua:onThink
[21/05/2015 13:56:07] Description:
[21/05/2015 13:56:07] data/globalevents/scripts/pointsperhour.lua:13: attempt to call field 'executeQuery' (a nil value)
[21/05/2015 13:56:07] stack traceback:
[21/05/2015 13:56:07]     data/globalevents/scripts/pointsperhour.lua:13: in function <data/globalevents/scripts/pointsperhour.lua:5>
[21/05/2015 13:56:07] [Error - GlobalEvents::think] Couldn't execute event: points

 

db.query

[21/05/2015 13:58:05] [Error - GlobalEvent Interface]
[21/05/2015 13:58:05] data/globalevents/scripts/pointsperhour.lua:onThink
[21/05/2015 13:58:05] Description:
[21/05/2015 13:58:05] data/globalevents/scripts/pointsperhour.lua:13: attempt to call field 'query' (a nil value)
[21/05/2015 13:58:05] stack traceback:
[21/05/2015 13:58:05]     data/globalevents/scripts/pointsperhour.lua:13: in function <data/globalevents/scripts/pointsperhour.lua:5>
[21/05/2015 13:58:05] [Error - GlobalEvents::think] Couldn't execute event: points
 

 

 

db.escapeString

com esse fica sem erro no distro, porém não adiciona os pontos

Link para o post
Compartilhar em outros sites

tenta usar 'db.Query'

 

 

 

 

db.query

[21/05/2015 13:58:05] [Error - GlobalEvent Interface]
[21/05/2015 13:58:05] data/globalevents/scripts/pointsperhour.lua:onThink
[21/05/2015 13:58:05] Description:
[21/05/2015 13:58:05] data/globalevents/scripts/pointsperhour.lua:13: attempt to call field 'query' (a nil value)
[21/05/2015 13:58:05] stack traceback:
[21/05/2015 13:58:05]     data/globalevents/scripts/pointsperhour.lua:13: in function <data/globalevents/scripts/pointsperhour.lua:5>
[21/05/2015 13:58:05] [Error - GlobalEvents::think] Couldn't execute event: points
Link para o post
Compartilhar em outros sites

é db.Query com o Q maiusculo

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

é db.Query com o Q maiusculo

 

 

 

com o db.Query o sistema não mostra nem a mensagem que ganha pontos, apenas da esse erro

[21/05/2015 20:28:37] [Error - GlobalEvent Interface]
[21/05/2015 20:28:37] data/globalevents/scripts/pointsperhour.lua:onThink
[21/05/2015 20:28:37] Description:
[21/05/2015 20:28:37] data/globalevents/scripts/pointsperhour.lua:13: attempt to call field 'Query' (a nil value)
[21/05/2015 20:28:37] stack traceback:
[21/05/2015 20:28:37]     data/globalevents/scripts/pointsperhour.lua:13: in function <data/globalevents/scripts/pointsperhour.lua:5>
[21/05/2015 20:28:38] [Error - GlobalEvents::think] Couldn't execute event: points
Link para o post
Compartilhar em outros sites
  • Sub-Admin

db.executeQuery("UPDATE `accounts` SET `p_points` = " .. (pegarPoints(dono) + config.p_points) .. " WHERE `id` = "..dono)

 

problema ta ai se seu server for site da é só importa a Query

 

 

cria uma arquivo com nome que quiser na pasta LIB  e add isso.

 

function getPoints(cid)

local check = db.getResult("SELECT `p_points` FROM `accounts` WHERE `id` = " .. getPlayerGUID(cid) .. " LIMIT 1")

return check:getDataInt("p_points") <= 0 and 0 or check:getDataInt("p_points") end

 

function addPoints(cid,amount)
db.executeQuery("UPDATE `accounts` SET `p_points` = "..getPoints(cid).."+"..amount.." WHERE `id` = "..getPlayerGUID(cid)) end

 

function removePoints(cid,amount)
db.executeQuery("UPDATE `accounts` SET `p_points` = "..getPoints(cid).."-"..amount.." WHERE `id` = "..getPlayerGUID(cid)) end

 

function setPoints(cid,value)
db.executeQuery("UPDATE `accounts` SET `p_points` = "..value.." WHERE `id` = "..getPlayerGUID(cid)) end
 

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

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros sites

[28/05/2015 23:37:24] [Error - GlobalEvent Interface]
[28/05/2015 23:37:24] data/globalevents/scripts/pointsperhour.lua:onThink
[28/05/2015 23:37:24] Description:
[28/05/2015 23:37:24] data/globalevents/scripts/pointsperhour.lua:13: attempt to call field 'executeQuery' (a nil value)
[28/05/2015 23:37:24] stack traceback:
[28/05/2015 23:37:24]     data/globalevents/scripts/pointsperhour.lua:13: in function <data/globalevents/scripts/pointsperhour.lua:5>
[28/05/2015 23:37:24] [Error - GlobalEvents::think] Couldn't execute event: points
[28/05/2015 23:37:24] Reloaded global events.

[28/05/2015 23:37:30] [Error - TalkAction Interface]
[28/05/2015 23:37:30] data/talkactions/scripts/pointsperhour.lua:onSay
[28/05/2015 23:37:30] Description:
[28/05/2015 23:37:30] data/lib/004-database.lua:60: [Result:getDataInt] Result not set!
[28/05/2015 23:37:30] stack traceback:
[28/05/2015 23:37:30]     [C]: in function 'error'
[28/05/2015 23:37:30]     data/lib/004-database.lua:60: in function 'getDataInt'
[28/05/2015 23:37:30]     data/lib/points.lua:5: in function 'getPoints'
[28/05/2015 23:37:30]     data/talkactions/scripts/pointsperhour.lua:2: in function <data/talkactions/scripts/pointsperhour.lua:1>
 

ps: sem site no servidor

 

 

globalevent - pointsperhour.lua

 

 function pegarPoints(acc)
local info = db.getResult("SELECT `p_points` FROM `accounts` WHERE `id` = "..acc)
return info:getDataInt("p_points") < 0 and 0 or info:getDataInt("p_points")
end
function onThink(interval)
local config = {
       p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
       p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}
for _, cid in ipairs(getPlayersOnline()) do
if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
local dono = getPlayerAccountId(cid)
db.escapeString("UPDATE `accounts` SET `p_points` = " .. (pegarPoints(dono) + config.p_points) .. " WHERE `id` = "..dono)
doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. config.p_points .." p points. Now you have ".. getPoints(cid) .." p points in your account. Your timer was reseted.")   
doCreatureSetStorage(cid, 1219, 0)
doCreatureSetStorage(cid, 1219, os.time())
end
end
return true
end

 

 

talkactions - pointsperhour

 

 
function onSay(cid, words, param, channel)
local getP = getPoints(cid)
doPlayerPopupFYI(cid, "You have ".. getP .." P points.")
return true
end

 

Editado por biel.stocco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

que distro tu usa cara?? é o tfs 1.0 ou tfs 1.1??

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

ai me pegou manin.. o server que to editando tem sources mas eu to com problemas pra compilar e não sei te falar qual distro é, como posso descobrir?
e poderia me ajudar no skype ou de outra forma a compilar minhas sources?

Editado por biel.stocco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo