Ir para conteúdo
  • Cadastre-se

[PEDIDO] Sistema VIP para comprar em site do OT


Posts Recomendados

Seguinte, eu criei um servidor hoje (11) e queria um sistema VIP que, o jogador comprasse o VIP ou os diamonds no site do jogo, daí quando o pagamento fosse confirmado, os itens seriam transferidos para o inventário dele.

 

Mas antes, gostaria de saber se isso é possível, se sim, tem como vocês me ensinarem como eu faço?

 

Desde já agradeço.

Link para o post
Compartilhar em outros sites

Perfect Vip system 3.0

Última atualização: 14/08/12


Versão Testada:TFS 0.3.6 - 8.54 - 8.6 - 9.6
Créditos pelas modificações: Kydrai,Vodkart e Marcryzius


Oque Contém no Sistema vip 3.0?
 

-- Sistema de vip feita por Charcter e não pela account

-- Compra Vip pela talkaction (Comando !buyvip )

-- Tile para somente Players Vip passarem

-- verifica quantos dias de Vip o character ainda possui.

-- Administradores(GOD) podem adicionar e remover dias de Vip para characters.

-- Administradores(GOD) podem checkar dias de Vip dos Players.

-- Agora é feita pela DB


Comandos:


!buyvip -- compra "X" números de dias por "Y" preço.



!vipdays -- retorna quanto dias de vip o character Possui



/checkvip Nick -- retorna os dias de vip restante do jogador



/addvip Nick,days -- adiciona uma quantia pré definida para o jogador



/delvip Nick,days -- remove certos dias de vip do character de um jogador



Query
Primeiro passado execute essa query na sua DB:



Código: ALTER TABLE `players` ADD `vipacess` INT(15) NOT NULL DEFAULT 0;

Agora vá em Data/lib/050-function e adicione essas funções:
 

Código: function getCharacterAcess(cid)
local query = db.getResult("SELECT `vipacess` FROM `players` WHERE `id` = "..getPlayerGUID(cid))
if query:getID() ~= -1 then return query:getDataInt("vipacess") end
end
function getCharacterDays(cid)
local acess = math.ceil((getCharacterAcess(cid) - os.time())/(86400))
return acess <= 0 and 0 or acess
end
function HaveCharaterAcess(cid)
return getCharacterDays(cid) > 0 and true or false
end
function setAcessTime(cid, time)
return db.executeQuery("UPDATE `players` SET `vipacess` = "..time.." WHERE `id` = "..getPlayerGUID(cid))
end
function addCharacterAcess(cid, days)
local add = (days <= 0 and 1 or days)*86400
local time = getCharacterDays(cid) == 0 and (os.time() + add) or (getCharacterAcess(cid) + add)
return setAcessTime(cid, time)
end
function doRemoveCharacterAcess(cid, days)
local remove = days*86400
local time = getCharacterAcess(cid) - remove
return setAcessTime(cid, (time <= 0 and 1 or time))
end
function getVipAcessDate(cid)
if HaveCharaterAcess(cid) then return os.date("%d/%m/%y %X", getCharacterAcess(cid)) end
return false
end

Talkactions
agora em talkactions/scripts


vipsystemplayer.lua



Código: function onSay(cid, words, param) 
if(words == "!buyvip") then
local days = 10
local price = 50000 
if not doPlayerRemoveMoney(cid, price) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.") return true
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.") 
addCharacterAcess(cid, days)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid))   
elseif(words == "!vipdays") then
return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP. "..(getCharacterDays(cid) > 0 and "ela acaba em "..getVipAcessDate(cid).."." or "")) 
end
return true
end
 

vipsystemgod.lua

Código: function onSay(cid, words, param) 
if(words == "/checkvip") then 
if(param == '') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true
end
local player = getPlayerByName(param) 
if not isPlayer(player) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.") return true
end
return doPlayerPopupFYI(cid, "O jogador tem "..getCharacterDays(player).." dias de VIP no character.") 
elseif(words == "/addvip") then 
local t = string.explode(param, ",") 
if not tonumber(t[2]) then 
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true
end 
                local player = getPlayerByNameWildcard(t[1])
                if(not player)then
                                return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.")
                end
addCharacterAcess(player, tonumber(t[2]))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você adicionou "..tonumber(t[2]).." dias de VIP no player "..getCreatureName(player))
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..tonumber(t[2]).." dias de VIP no seu character.")   
elseif(words == "/delvip") then
        local t = string.explode(param, ",") 
if not tonumber(t[2]) then 
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true
end 
                local player = getPlayerByNameWildcard(t[1])
                if(not player)then
                                return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.")
                end
doRemoveCharacterAcess(player, tonumber(t[2]))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você removeu "..tonumber(t[2]).." dias de VIP do jogador "..getCreatureName(player)..".") 
end
return true
end
 

em talkactions.xml adicione as tags:

Código: <talkaction words="!buyvip;!vipdays" event="script" value="vipsystemplayer.lua"/>
<talkaction words="/addvip;/delvip;/checkvip" access="4" event="script" value="vipsystemgod.lua"/>
 

Item Vip

item que adiciona vip no character

actions/script

addvipdays.lua


Código: function onUse(cid, item, fromPosition, itemEx, toPosition)
local days = 15
addCharacterAcess(cid, (days <= 0 and 1 or days))
doRemoveItem(item.uid,1)
return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid))
end

Actions.xml

Código: <action itemid="ID DO SEU ITEM" script="addvipdays.lua"/>

Vip Door

actions/script

perfectvipdoor.lua


Código: function onUse(cid, item, frompos, item2, topos)
if not HaveCharaterAcess(cid) then
return doPlayerSendTextMessage(cid,22,"Você precisa ser vip para passar aqui.")
endhttp://illiweb.com/fa/wysiwyg/page_white_code.png
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, topos, true)
return true
end
 

actions.xml

Código: <action actionid="7779" script="perfectvipdoor.lua"/>
 

Tile VIP

em movements/scripts crie um arquivo.lua e renomeie para


vipe.lua


Código: function onStepIn(cid, item, position, fromPosition)
if item.actionid == 13700 and not HaveCharaterAcess(cid) then
doTeleportThing(cid, fromPosition, true)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você não é vip.")
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
return true
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"bem vindo.")
return true
end
 

Em movements.xml adicione a tag:


Código: <movevent type="StepIn" actionid="13700" event="script" value="vipe.lua"/>

no seu piso coloque ACTIONID 13700



Fim Vip



em creaturescript/script


endvip.lua


Código: function onLogin(cid)
if getCharacterDays(cid) > 0 then
setPlayerStorageValue(cid, 9898, 1)
elseif getPlayerStorageValue(cid, 9898) == 1 and getCharacterDays(cid) <= 0 then
doPlayerSetTown(cid, 1)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doPlayerPopupFYI(cid, "Sua vip Account acabou.")
setPlayerStorageValue(cid, 9898, -1)
end
return true
end
 

em creaturescript.xml adicione a tag:
 

Código: <event type="login" name="CheckVip" script="endvip.lua"/>      

 

 

 

 

 

CRÉDITOS LAIONELXXT       SE AJUDEI REP+

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

recomendo : http://www.tibiaking.com/forum/topic/20589-vip-system-by-mock-100/

utilizo ele junto com Gesior 2012 100% compatível shop perfeito nunca tive nenhum problema.

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

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