VO
sistema

Perfect Vip System 3.0

Por Vodkart, 25 de mai. de 2010 em Mods, funções e outros

script
5.0 (1)
160
61k
fokus090F
01 de março de 2011 às 11:09

Vodkart, tenho um problema ..

 

Exemplo ::.

 

Um Players chamado "God" compra vip. Logo ele ficará "[Vip] God".

Por aí tudo bem ...

Mas quando o Player "God" possui a vip, outro personagem pode usar o nome "God" para criar outro char.

 

Quando o Player "[Vip] God" acaba com sua Vip, ele volta a possuir o nome "God". Mas aí fica dois players com o mesmo nome ..

Player1 - God

Player2 - God

 

:blink: :blink: :blink:

 

Eu queria que quando o player comprase a Vip, o nome anterior dele fosse preservado para que outro player não possa utilizar ele enquanto o player possui Vip.

Não sei se entendeu muito bem, mas é isso. Tirando isso o System esta Maravilhoso!!

 

Abraços !! :smile_positivo:

claudiomirC
02 de março de 2011 às 20:16

Otimo systema voou poder aqui no meu ot.

uma pergunta o premium account vai funcionar normal?

2 semanas depois...
refiR
14 de março de 2011 às 01:09

@Vodkart Eu gostaria de saber se tem como ter este systema de vip sem adcionar o nome [VIP] ao player?

Ficaria grato se pudesse modificar para que não adc. :thumbsupsmiley2:

VodkartV
14 de março de 2011 às 08:00

 

 

function onSay(cid, words, param)
if(words == "!buyvip") then
	local price = 3000000
	if doPlayerRemoveMoney(cid, price) == TRUE then
		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)

		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 == "!vipdays") then
	local timenow = os.time()
	local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))
a		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no seu character.")

elseif(words == "/checkvip") 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 == "/addvip") 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 == "/delvip") 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

 

 

refiR
14 de março de 2011 às 18:56

Desculpa se eu estou pedindo mt.

Mas queria o que não pudesse comprar no jogo e o endvip, pq se eu colocar só esse quando acabar a vip, vai sumir o nome do kra todo.

:confused:

Ajuda por favor.

Fico grato mesmo assim :smile_positivo:

VodkartV
14 de março de 2011 às 19:04

 

 

-- Script SYtem vip 1.0 --

function onSay(cid, words, param)

if(words == "!vipdays") then
local timenow = os.time()
local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))
local hours = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(3600))
if quantity >= 1 then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no seu character.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. (hours < 0 and 0 or hours) .." horas de VIP no seu character.")
end

elseif(words == "/addvip") 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]
local pid = getPlayerByNameWildcard(t[1])
if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")
return TRUE
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 == "/checkvip") then
if getPlayerAccess(cid) == 5 then
if not param then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end

local player = getPlayerByName(param)
local pid = getPlayerByNameWildcard(param)
if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")
return TRUE
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 == "/delvip") 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.
local pid = getPlayerByNameWildcard(t[1])
if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")
return TRUE
end

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

 

 

em talkactions.xml adicione a tag:

 

 

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

 

 

 

e o end vip ta aki

 

http://www.xtibia.com/forum/topic/141380-quando-vip-acabarser-teleportado-para-o-templo/

Editado Março 14 por Vodkart

refiR
14 de março de 2011 às 20:10

Kramba kra, nem achava que vc ia responder :thumbsupsmiley2:

Muito Obrigado mesmo.

REP + assim que puder :button_ok:

 

Edit

Obrigado Vodkart. Mais uma REP + e continue assim ajudando kra :smile_positivo:

Abraços

Editado Março 15 por GlobalRefi

gabizinhaahG
18 de março de 2011 às 01:10

Olá Vodkart, o sistema aparentemente está muito legal, vou usar no meu servidor com certeza.

Mas, antes de colocar em vigor, eu gostaria de saber como posso tirar esse VIP na frente do Nick,

Acho que não ficaria muito legal aparecendo VIP na frente do nick.

Pode me passar o script sem essa função?

Thanks :D

VodkartV
18 de março de 2011 às 07:29

ok,com ou sem o !buyvip

 

?

nariN
21 de março de 2011 às 10:47

@Vodkart mano gostaria de sabe se tem como a vip ir para a acc inteira e nao apenas para um char

VodkartV
21 de março de 2011 às 11:48

Não,até tem mais seria por outra função no caso de vez de storagecid seria por storageaccount,mais como na maioria dos servidores ninguem tem essa função n daria para colocar.

 

aconselho usar do vip system by account do kydrai.

abraços

1 mês depois...
pedroca80P
30 de abril de 2011 às 11:53

Sequinte depois que eu coloquei o Perfect VIP no meu otserv o .exe começo dar uns erros e fechar sozinho queria saber pq, se é algum erro no meu distro ou se é erro nos scripts, antes nunca deu isso!A MEU SERVER 8.60 "REAL SERVER",

SCRIPTS LOGO ABAIXO:

 

 

 

data\talkactions\scripts\systemvip.lua

-- Script SYtem vip 2.0 --

 

function onSay(cid, words, param)

 

if(words == "!vipdays") 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 == "/checkvip") 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 == "/addvip") 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 name = getCreatureName(player)

local days = t[2]

local pid = getPlayerByNameWildcard(t[1])

if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")

return TRUE

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)

 

if string.find(tostring(getCreatureName(pid)),"[[VIP]]") then

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.")

else

setPlayerStorageValue(player, 13540, time)

db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..name.."' WHERE `id` = "..getPlayerGUID(player)..";")

doRemoveCreature(player)

end

end

 

elseif(words == "/delvip") 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

data\talkactions\talkaction.xml

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

 

 

 

 

 

 

data\movements\scripts\vipe.lua

-- Script Vip Sytem 1.0 --

function onStepIn(cid, item, position, fromPosition)

 

local config = {

msgDenied = "Você não e vip ,fale com Administrador do Server.",

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

 

data\movements\movements.xml

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

 

 

 

 

 

creaturescripts\scripts\endvip.lua

--[[ by vodkart ]]--

function onLogin(cid)

 

if getPlayerStorageValue(cid, 13540) - os.time() > 0 then

setPlayerStorageValue(cid, 9898, 1)

end

 

local pos = {x = 157, y = 50, 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

 

data\creaturescripts\creaturescripts.xml

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

 

1 mês depois...
matmaniaM
26 de maio de 2011 às 11:59

Alguem sabe um para o thyranic server

1 mês depois...
luisinho15L
07 de junho de 2011 às 14:28

muito bom, perfeito para falar a verdade... mais eu tou com uma duvida, como tiro akele [VIP] que fica quando o jogador compra o vip ?

1 mês depois...
johann07J
09 de julho de 2011 às 12:27

estou tendo problema na talee vip pois passo por cima dela e n acontece nada nem da mensagem e passo normal