Em 27/04/2020 em 14:35, adrianokk disse:
Versão do Servidor:
Tipo de Script:
Código:
estou com 2 scripts que da vip ao jogador.
1- Da Vip através da Loja, Editei ele um pouco e deixei assim.
Porem parece que os Storage não esta saindo sozinho com o tempo, preciso que o jogador perca o storage depois de 30 dias.
pois estou utilizando o sistema de Storage para portas, pisos, Teleportes, XP bonos e outras coisas.
local a = { DAYS = 30 } -- Dias de Vip
function onSay(cid, words, param, channel)
if getPlayerStorageValue(cid, 225501) == 1 then
return doPlayerSendTextMessage(cid, 20, "Você ja ainda possui VIP Account, espere o termino para ativar novamente!!")
and true
else
if getPlayerItemCount(cid, 2145) < 15 then
return doPlayerSendTextMessage(cid, 20, "Voce não tem 15 Gold Bars para realizar a compra.")
and true
end
if getPlayerItemCount(cid, 2145) >= 15 then
setPlayerStorageValue(cid, 225501, 1)
doPlayerAddPremiumDays(cid, a.DAYS)
doPlayerRemoveItem(cid, 2145, 15)
doPlayerSendTextMessage(cid, 20, "Voce recebeu "..a.DAYS.." dias de VIP Account!")
doSendMagicEffect(getCreaturePosition(cid), 28)
return true
end
end
end
2- o Segundo Script é Vip através de um Item.
também quero botar o mesmo sistema de Storage que depois de 30 dias o Storage sair do jogador.
Porem esse aqui ta um pouco mais bagudo. e não esta retirando o tem (17496) depois do jogador utilizar ele.
local a = { DAYS = 30 } ---Dias Vip
function onUse (cid, item, frompos, item2, topos, words, param)
if getPlayerStorageValue(cid, 225501) == 1 then
return doPlayerSendTextMessage(cid, 20, "Voce ja ainda possui VIP Account, espere o termino para ativar novamente!!")
and true
end
if setPlayerStorageValue(cid, 225501, 1) then
doRemoveItem(cid, 17496, 1)
doPlayerAddPremiumDays(cid, a.DAYS)
doPlayerSendTextMessage(cid, 20, "Voce ativou 30 dias de VIP Account, com areas exclusiva, +30% EXP e outros beneficios!")
doSendMagicEffect(getCreaturePosition(cid), 28)
return true
end
end
Eu refiz os scripts.
1º Script da Loja:
local storage_vipdays = 225501 -- VARIÁVEL QUE VERIFICA TUDO QUE É VIP
local dias_vip = 30 -- DIAS PARA SER VIP
local item = 2145 -- ITEM QUE REMOVE PARA DAR VIP
local quantidade_item = 15 -- QUANTIDADE DO ITEM QUE TORNA VIP
function onSay(cid, words, param, channel)
if getPlayerStorageValue(cid, storage_vipdays) <= 0 then
if getPlayerItemCount(cid, item) >= quantidade_item then
doPlayerRemoveItem(cid, item, quantidade_item)
doSendMagicEffect(getThingPos(cid), 28)
doPlayerAddPremiumDays(cid, dias_vip)
doPlayerSendCancel(cid, "Agora você é VIP Account!")
doPlayerSendTextMessage(cid, 20, "Você recebeu " ..dias_vip.. " dias de VIP Account. Agora você terá +30% EXP, acesso à áreas exclusivas, e outros benefícios!")
setPlayerStorageValue(cid, storage_vipdays, os.time() + dias_vip * 24 * 60 * 60)
return true
else
return doPlayerSendTextMessage(cid, 20, "Você não tem " ..quantidade_item.. " " ..getItemNameById(item).. " para realizar a compra.")
end
else
return doPlayerSendTextMessage(cid, 20, "Você ainda é VIP Account.")
end
end
2º Script do Item (Actions):
local storage_vipdays = 225501 -- VARIÁVEL QUE VERIFICA TUDO QUE É VIP
local dias_vip = 30 --DIAS PARA SER VIP
function onUse (cid, item, frompos, item2, topos, words, param)
if getPlayerStorageValue(cid, storage_vipdays) <= 0 then
doRemoveItem(item.uid, 1)
doSendMagicEffect(getThingPos(cid), 28)
doPlayerAddPremiumDays(cid, dias_vip)
doPlayerSendCancel(cid, "Agora você é VIP Account!")
doPlayerSendTextMessage(cid, 20, "Você recebeu " ..dias_vip.. " dias de VIP Account. Agora você terá +30% EXP, acesso à áreas exclusivas, e outros benefícios!")
setPlayerStorageValue(cid, storage_vipdays, os.time() + dias_vip * 24 * 60 * 60)
return true
else
return doPlayerSendTextMessage(cid, 20, "Você ainda é VIP Account.")
end
end
Não esqueça de salvar o arquivo com codificação ANSI por conta dos acentos.
Sobre seu segundo post que me marcou:
5 horas atrás, adrianokk disse:
A distribuição de EXp para player normal e player Vip estão assim no servidor. @Yan18
function playerAddExp(cid, exp)
local vip = 2.37
local color = 215
local tets = " (EXP)"
e
if getPlayerStorageValue(cid, 123456) == 1 then
vip = 3,09
color = 210
tets = " (VIP)"
end
Mas se eu substituir por essa, ele vai pegar normalmente ou esta errado ?
if getPlayerPremiumDays(cid) >= 1 then
vip = 3,09
color = 210
tets = " (VIP)"
end
Do jeito que você alterou vai dar errado amigo, pois para número real (float/double) em lua tem que usar o ".", pois a vírgula é usada para separação.
local exp = 3.09
local color = 210
local texto = " (VIP)"
if getPlayerPremiumDay(cid) > 0 then
CÓDIGO AQUI
end
Eu arrumei aqui para você, não se essas variáveis da suas verificação já foram criadas, mas procure sempre usar local antes de variável criada quando ela será usada somente em um arquivo, pois sem "local" se torna variável global e se você criar outra variável com esse nome em outro arquivo pode dar conflito e dar problema.
Separei as variáveis para você e já coloquei os valores, só colocar no código, mas qualquer coisa posta o script que eu arrumo para você.