Ir para conteúdo

Perfect Vip System 3.0


Vodkart

Posts Recomendados

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:

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

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

Link para o comentário
Compartilhar em outros sites

 

 

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

 

 

Link para o comentário
Compartilhar em outros sites

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:

Link para o comentário
Compartilhar em outros sites

 

 


-- 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 por Vodkart
Link para o comentário
Compartilhar em outros sites

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 por GlobalRefi
Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

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

 

Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...
  • 2 weeks later...
  • 1 month later...
×
×
  • Criar Novo...