Ir para conteúdo
  • Cadastre-se

[System] Pontos "P" Points System


Posts Recomendados

  Em 04/10/2011 em 22:53, AgaSsI disse:

 

 

 

 

 

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

Hidden Content

    Give reaction to this post to see the hidden content.
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

Hidden Content

    Give reaction to this post to see the hidden content.
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:
 
 

 
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

 

 

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

 

 
Ilustração de !ppoints

 

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

 

 

 

Creditos:
LsM

 

 

 

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

 

 

 

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

 

 

 

Expand   Mostrar mais  

Ótimo tutorial, ainda colocou as funções pra usar em um npc ^^  

Eu queria em vez do player receber esse "point", receber outra coisa, exemplo: possuo uma moeda no meu ot chamada event point, adquirida em eventos,quests etc, existe npcs que vendem itens por event points e tal, pode me dizer onde altero para o player receber em vez desses pontos, o event point?  OBS: event point é um iten, creio que os pontos do seu script não aparecem na mochila hehe

Link para o post
Compartilhar em outros sites
  • 9 months later...
  • Respostas 31
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

P Points System               Nome do script : P Points system v1   Versão testada : TFS 0.4 (8.70 Funciona em versões anteriores)   Creditos : LsM     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

Eu sei que este topico é antigo mas eu queria usar esse script em um npc e como intendo muito pouco sobre scripts consegui fazer um npc com base em outro de meu server, enfim vai que alguem queira o npc e não saiba criar vou posta-lo aqui.   Em npc cria um arquivo com nome P trader.xml e adicione isso dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Points Trader" script="P trader.lua" walkinterval="2000">     <health now="100" max="100"/>     <look ty

/\ Isso voce coloca no sql. para por isso e só abrir a database do seu servidor e colocar sql editor, colcar isso e executar

Posted Images

Eu sei que este topico é antigo mas eu queria usar esse script em um npc e como intendo muito pouco sobre scripts consegui fazer um npc com base em outro de meu server, enfim vai que alguem queira o npc e não saiba criar vou posta-lo aqui.

 

Em npc cria um arquivo com nome P trader.xml e adicione isso dentro:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Points Trader" script="P trader.lua" walkinterval="2000">
    <health now="100" max="100"/>
    <look type="453"/>
    <parameters>
        <parameter key="message_greet" value="Olá, |PLAYERNAME|! Eu vendo itens por P Points (Horas Online). Diga {Trade}."/>
    </parameters>
</npc>

 

Agora em npc/scripts crie um arquivo .lua com nome P trader.lua e adicione isso dentro:

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 = {
          [5957] = 240, -- [id do item] = quantos pontos vai custar
          [2159] = 25,
          [2396] = 5,
          [2397] = 5,
          [2398] = 5,
          [2493] = 5,
          [2494] = 5,
          [2495] = 5,
          [2496] = 5,
          [2331] = 1
          }
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())

Acho que nem preciso explicar como configurar.

Link para o post
Compartilhar em outros sites
  • 1 month later...

@poko360 Testa esse aqui.

 

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 itemid = 2157 -- Novos points
local shopWindow = {}
local t = {
 [8850] = {price = 400}, -- [ID do item] e o preço que ele irá custar em points.
 [8929] = {price = 400},
 [8932] = {price = 400},
 [8926] = {price = 400},
 [2424] = {price = 400},
 [11296] = {price = 200},
 [11295] = {price = 200},
 [11298] = {price = 200},
 [11297] = {price = 200},
 [2527] = {price = 200},
 [2108] = {price = 900},
 [9019] = {price = 900},
 [3955] = {price = 900}
 }
local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)
if  t[item] and getPlayerItemCount(cid, itemid) < t[item].price then
selfSay("you do not have "..t[item].price.." Nugget Coins.", cid)
else
doPlayerAddItem(cid, item)
doPlayerRemoveItem(cid, itemid, (t[item].price))
selfSay("Here you 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.price, 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())

 

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.

  • Estatísticas dos Fóruns

    96844
    Tópicos
    519597
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo