Ir para conteúdo

Featured Replies

Postado
P Points System

 

 

 

 

 

 

divisor.png

 

 

 

 

 

 

 

 

 

 

 
Nome do script :
P Points system v1

 

 
Versão testada :
TFS 0.4 (8.70 Funciona em versões anteriores)

 

 
Creditos :
LsM

 

 

DedoDireita.png

 
Como funciona :

 

 

 

 
O
sistema funciona como uma recompensa ao player por ficar
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
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.

 

 

 

 

 

 

DedoDireita.png

 
Como utilizar :

 

 

 

 
C
omo 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.

 

 

 

 

 

 

DedoDireita.png

 
Instalação :

 

 

 

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

 

 

 

Código:

 

 
 

 
ALTER TABLE `accounts` ADD `p_points` INTEGER NOT NULL DEFAULT 0
 
Em seguida, crie um arquivo com a extensão
.lua
chamado "
points.lua
" em "
data/creaturescripts/scripts
" e adicione o código abaixo :
Código:
 

 
--[[ P Points System by LsM. OTServ Brasil © 2011 Version : v1.0 ]]-- function onLogin(cid) doCreatureSetStorage(cid, 1219, os.time()) return true end function onLogout(cid) doCreatureSetStorage(cid, 1219, 0) return true end
 
Ainda em creaturescripts, abra o arquivo "
creaturescripts.xml
" e adicione a seguinte
TAG
:
Código:
 

 
<event type="login" name="PlayerAddPointsTimer" event="script" value="points.lua"/> <event type="logout" name="PlayerResetPointsTimer" event="script" value="points.lua"/>
 
Agora, em "
data/globalevents/script
" crie um arquivo com a extensão
.lua
também chamado "
points.lua
" e cole o seguinte código :
Código:
 

 
--[[ P Points System by LsM. OTServ Brasil &#169; 2011 Version : v1.0 ]]-- 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" }local function givePoints(cid, quant) if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. config.p_points .." p points. Now you have ".. config.p_points + getPoints(cid) .." p points in your account. Your timer was reseted.") doPlayerAddPoints(cid, quant) doCreatureSetStorage(cid, 1219, 0) doCreatureSetStorage(cid, 1219, os.time()) end return true end function onThink(interval) for i, v in pairs(getPlayersOnline()) do givePoints(v, config.p_points) end return true end
 
E em "
globalevents.xml
" cole a seguinte
TAG
:
Código:
 

 
<globalevent name="points" interval="60" event="script" value="points.lua"/>
 
Em seguida vá em "
data/talkactions/scripts
", crie um arquivo com extensão
.lua
chamado "
points.lua
" e adicione o seguinte código :
Código:
 

 
function onSay(cid, words, param, channel) local getP = getPoints(cid) doPlayerPopupFYI(cid, "You have ".. getP .." P points.") return true end
 
E em "
talkactions.xml
" adicione a
TAG
:
Código:
 

 
<talkaction words="!ppoints;/ppoints" event="script" value="points.lua"/>
 
Para finalizar, vá em "
data/lib/050-function.lua
" e na última linha, adicione as funções abaixo :
Código:
 

 
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.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) + quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doPlayerRemovePoints(cid, quant) return db.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) - quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end
 
Fim, o sistema está instalado.
 

DedoDireita.png

 
Como configurar :
 
A
parte da configuração é a mais fácil, apenas edite :
 
Código:
 
 

 
[/size]
[/font]
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" }

 

 

 

 

 

 

 
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.

 

 

 

 

DedoDireita.png

 
Ilustração :

 

 

 

 

 

 

 

 

Funcionamento do script

 

 

 

219b993.png

 

 

 

 
Ilustração de !ppoints

 

 

10z9y7p.png

 

 

 

NPC:
Crie um arquivo xml com nome ppoints.xml na pasta npc e coloque.
 
 
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Points Trade" script="Ptrader.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="1801" head="59" body="76" legs="48" feet="48"/>
</npc>
 
Depois va em npc, scripts , cria 1 arquivo .lua com nome Ptrader.lua e coloque.
 
 
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local shopWindow = {}
local t = {
          [13308] = 19, -- [id do item] = quantos pontos vai custar
          [13293] = 15,
          [13279] = 15,
          [13301] = 15,
          [13228] = 45,
          [13594] = 45,
          [13637] = 6,
          [13638] = 6,
          [13639] = 6,
          [13634] = 6
          }
local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)
if t[item] and getPoints(cid) < t[item] then
selfSay("Você precisa de "..t[item].." P points para comprar este item.", cid)
else
doPlayerRemovePoints(cid, t[item])
doPlayerAddItem(cid, item)
selfSay("Aqui esta seu item", cid)
end
return true
end
if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then
                        for var, ret in pairs(t) do
                                        table.insert(shopWindow, {id = var, subType = 0, buy = ret, sell = 0, name = getItemNameById(var)})
                                end
                        openShopWindow(cid, shopWindow, onBuy, onSell)
                end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
Explicano:
 
[13308] = 19,    [ID DO ITEM] = QUANTIDADE DE PPOINTS
 
Lenbrano si for aumenta a quantidade de items deixem o utimo item sem o , explo:  [13634] = 6

 

Creditos:
LsM

 

Todos arquivos pra baixa \/ utilizei ctrl+c ctrl+v pq não tinha o npc no topico horijinal mais ae esta 
 

 

 
Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

  • 2 months later...

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