Postado Maio 21, 2015 10 anos 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 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 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 Maio 21, 2015 10 anos por biel.stocco (veja o histórico de edições)
Postado Maio 21, 2015 10 anos 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 [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Maio 21, 2015 10 anos 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 Maio 21, 2015 10 anos por biel.stocco (veja o histórico de edições)
Postado Maio 21, 2015 10 anos mas se vc usa o comando !ppoints mostra qntos pontos vc tem? [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Maio 21, 2015 10 anos 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.