Ir para conteúdo

Featured Replies

Postado
  Em 09/09/2011 em 23:46, Rafaelml disse:

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:

Mostrar conteúdo oculto 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
  Em 21/05/2015 em 08:38, Vodkart disse:

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:

Mostrar conteúdo oculto

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

Editado por biel.stocco (veja o histórico de edições)

  • Respostas 21
  • Visualizações 867
  • Created
  • Última resposta

Top Posters In This Topic

Postado

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

 

Postado
  • Autor
  Em 21/05/2015 em 16:28, Vodkart disse:
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)

Postado
  • Autor
  Em 21/05/2015 em 16:32, Vodkart disse:

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

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.7k

Informação Importante

Confirmação de Termo