Ir para conteúdo

Posts Recomendados

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?

 

  Citar

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

 

 

setas_menores.jpgComandos:

 

 

  Citar

!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

 

 

 

setas_menores.jpgQuery

 

Primeiro passado execute essa query na sua DB:

 

ALTER TABLE `players` ADD `vipacess` INT(15) NOT NULL DEFAULT 0;

 

 

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

 

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

 

 

 

 

setas_menores.jpgTalkactions

 

agora em talkactions/scripts

 

 

vipsystemplayer.lua

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

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:

 

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

 

 

setas_menores.jpgItem Vip

 

item que adiciona vip no character

 

actions/script

 

addvipdays.lua

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

<action itemid="ID DO SEU ITEM" script="addvipdays.lua"/>

 

 

setas_menores.jpgVip Door

 

actions/script

 

perfectvipdoor.lua

function onUse(cid, item, frompos, item2, topos)
if not HaveCharaterAcess(cid) then
return doPlayerSendTextMessage(cid,22,"Você precisa ser vip para passar aqui.")
end
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, topos, true)
return true
end

 

actions.xml

<action actionid="7779" script="perfectvipdoor.lua"/>

 

 

 

setas_menores.jpg Tile VIP

 

 

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

 

 

vipe.lua

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:

 

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

 

 

 

no seu piso coloque ACTIONID 13700

 

 

 

setas_menores.jpgFim Vip

 

em creaturescript/script

 

 

endvip.lua

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:

 

<event type="login" name="CheckVip" script="endvip.lua"/>

Editado por Vodkart
Link para o comentário
https://xtibia.com/forum/topic/133661-perfect-vip-system-30/
Compartilhar em outros sites

Opa, vê se você consegue me ajudar. Eu estou usando um sistema que adiciona vip pelo site. E como você comentou desse os.time() eu gostaria de saber se time() é a mesma coisa que os.time(). Porque eu configuro com os.time() e ele não retorna nenhum valor, já quando coloco apenas time() ele retonar um valor numérico grande.

 

Obrigado.

 

 

-----------------

EDIT:

 

Já resolvi o meu problema =)

Obrigado navamente!

Editado por GODHalf
Link para o comentário
https://xtibia.com/forum/topic/133661-perfect-vip-system-30/#findComment-880762
Compartilhar em outros sites

Aii MaN me dá um help aii :worriedsmiley:

 

OLha onde adiciono essa parte ?

 

em talkactions.xml adicione a tag:

 

  Citar

<talkaction words="!vipdays;/addvip;/delvip" script="systemvip.lua"/>

 

Talkaction

 

  Mostrar conteúdo oculto

 

 

:up:

Link para o comentário
https://xtibia.com/forum/topic/133661-perfect-vip-system-30/#findComment-881274
Compartilhar em outros sites

  Em 27/05/2010 em 14:10, MasterMathw disse:

KaLListo0,

 

bote em talkactions.

 

Cara eu sei que é pra por em talkactions mais eu coloquei a minha Talkactions.xml ali em spoilier ja pra me falarem em que lugar da talkactions eu tenho que por

caso você não tenha percebido

 

 

  Mostrar conteúdo oculto

 

Link para o comentário
https://xtibia.com/forum/topic/133661-perfect-vip-system-30/#findComment-881288
Compartilhar em outros sites

  • 2 weeks later...

O amigo é o seguint vou explikar o q ta acontecendo:

 

meu ot o portal onde leva pra area vip é cercado de chao com uid: 29000, intaum o q eu fis foi no seu script substituir onde tem 13540 por 29000 . até certa parte deu tudo certu fala qntos dias tem qnto eu kero add qnto eu kero rmv, mais qndo eu removo os dias de alguem depois q removo tudo o player ainda entra na area vip... intaum eu keria q vc me ajudasse a arrumar isso;/ ajuda ae galera, pq eu achu q qndo acabar automaticament tbm isso vai acontecer tbm dai tipo é como se o player fosse vip eterno ;/! ajudem plz

Link para o comentário
https://xtibia.com/forum/topic/133661-perfect-vip-system-30/#findComment-886286
Compartilhar em outros sites

  Em 06/06/2010 em 22:44, brunozd disse:

O amigo é o seguint vou explikar o q ta acontecendo:

 

meu ot o portal onde leva pra area vip é cercado de chao com uid: 29000, intaum o q eu fis foi no seu script substituir onde tem 13540 por 29000 . até certa parte deu tudo certu fala qntos dias tem qnto eu kero add qnto eu kero rmv, mais qndo eu removo os dias de alguem depois q removo tudo o player ainda entra na area vip... intaum eu keria q vc me ajudasse a arrumar isso;/ ajuda ae galera, pq eu achu q qndo acabar automaticament tbm isso vai acontecer tbm dai tipo é como se o player fosse vip eterno ;/! ajudem plz

 

 

é porque o script do tile(piso) não deve ter a função os.time então quando ele faz a checkagem da storage,e não dos dias.

Link para o comentário
https://xtibia.com/forum/topic/133661-perfect-vip-system-30/#findComment-886288
Compartilhar em outros sites

×
×
  • Criar Novo...