Olá pessoal do xtibia,
Hoje estou aki para postar um sistema vip Legal e Diferente.
P:Oque Muda ?
R:Quando o Player compra é adicionado automaticamente o [Vip] ao nome dele.
Vamos lá . . .
Primeiro vá até a pasta do OT/data/talkactions/script crie copie e cole um arquivo qualquer renomei para vip , apague tudo oque tem dentro e adicione :
-- Script SYtem vip 1.0 --
function onSay(cid, words, param)
if(words == "!vip") then
local price = 5000000
if doPlayerRemoveMoney(cid, 5000000) == TRUE then
local name = getCreatureName(cid)
local days = 30
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 13540)
local timenow = os.time()
if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then
time = timenow + daysvalue
else
time = storageplayer + daysvalue
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13540, time)
db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")
doRemoveCreature(cid)
local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.")
end
elseif(words == "!diasvip") then
local timenow = os.time()
local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no seu character.")
elseif(words == "/vervip") then
if getPlayerAccess(cid) == 5 then
if not param then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end
local player = getPlayerByName(param)
if not isPlayer(player) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.")
end
local timenow = os.time()
local quantity = math.floor((getPlayerStorageValue(player, 13540) - timenow)/(24 * 60 * 60))
doPlayerPopupFYI(cid, "O jogador tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no character.")
return TRUE
end
elseif(words == "/darvip") then
if getPlayerAccess(cid) == 5 then
local t = string.explode(param, ",")
if not t[2] then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end
local player = getPlayerByName(t[1])
local days = t[2]
if not isPlayer(player) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.")
end
local daysvalue = days*3600*24
local storageplayer = getPlayerStorageValue(player, 13540)
local timenow = os.time()
local time = storageplayer <= 0 and (timenow + daysvalue) or (storageplayer + daysvalue)
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.")
setPlayerStorageValue(player, 13540, time)
local quantity = math.floor((getPlayerStorageValue(player,13540) - timenow)/(3600*24))
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você tem "..quantity.." dias de VIP restantes.")
end
elseif(words == "/tirarvip") then
if getPlayerAccess(cid) == 5 then
local dec = MESSAGE_INFO_DESCR
if(param == "") then return TRUE,doPlayerSendTextMessage(cid,18,"Command param required.")end
local C,t = {},string.explode(param, ",")
C.pos = getPlayerPosition(cid)
C.uid = getCreatureByName(t[1])
C.time = ((tonumber(t[2]) == nil) and 1 or tonumber(t[2]))*3600*24 --Tempo da vip por dia.
C.days = (tonumber(t[2]) == nil) and 1 or tonumber(t[2]) --Dias de vip.
if(getPlayerStorageValue(C.uid,13540) < C.time)then
doPlayerSendTextMessage(cid,dec,'O jogador '..t[1]..' não possui '..C.days..' dias de vip.')
else
doPlayerSendTextMessage(cid,dec,'Você removeu '..C.days..' dias de vip do player '..t[1]..'.')
setPlayerStorageValue(C.uid,13540,getPlayerStorageValue(C.uid,13540)-C.time)
end
doSendMagicEffect(C.pos, math.random(28,30))
end
end
return TRUE
end
Depois em data/talkactions/talkactions.xml e adicione:
<talkaction words="!vip;!diasvip;/vervip;/darvip;/tirarvip" script="vip.lua"/>
Pronto talkactions pronta , agora data/movements/scripts copie e cole um arquivo qualquer renomei para vip , apague tudo q tem dentro e adicione:
-- Script Vip Sytem 1.0 --function onStepIn(cid, item, position, fromPosition)
local config = {
msgDenied = "Voce Nao tem Vip diga !vip para comprar.",
msgWelcome = "Seja Bem Vindo a Area vip."
}
if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then
doTeleportThing(cid, fromPosition, true)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
return TRUE
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgWelcome)
return TRUE
end
Script para quando o vip acaba o nome do cara mudar , va na pasta do ot/data/creaturescript copie e cole um arquivo qualquer,renomei para endvip e adicione:
--[[ by vodkart ]]--function onLogin(cid)
if getPlayerStorageValue(cid, 13540) - os.time() > 0 then
setPlayerStorageValue(cid, 9898, 1)
end
local pos = {x = 160, y = 54, z = 7} -- posiçao do templo.
function Vodka(cid)
if isPlayer(cid) then
db.executeQuery("UPDATE `players` SET `name` = '"..string.sub(getCreatureName(cid), 7).."' WHERE `id` = "..getPlayerGUID(cid)..";")
doRemoveCreature(cid)
end
end
if getPlayerStorageValue(cid, 9898) == 1 and getPlayerStorageValue(cid, 13540) - os.time() < 1 or getPlayerStorageValue(cid, 13540) - os.time() == 0 then
doTeleportThing(cid, pos)
doPlayerPopupFYI(cid, "Sua vip Account acabou.")
setPlayerStorageValue(cid, 9898, -1)
if string.find(tostring(getCreatureName(cid)),"[[Vip]]") then
addEvent(Vodka, 3*1000, cid)
end
end
return TRUE
end
Depois va em creaturescript.xml e adicione:
<event type="login" name="CheckVip" script="endvip.lua"/>
Pronto !!
Agora abra o Map Editor , coloque a Action ID 13540 na entrada do Vip ou se você não tiver Map Editor vá na entrada do Vip e use o comando /attr action 13540 só que tera q fazer isso toda vez que ligar o OT .
~~Creditos:
MininoLoko 10% (ecrevi o topico )
Vodkart 90%
Rep ++ Pls