MA

VIP Acaba mas players continuam acessando area

Por Mattchopz, 12 de abr. de 2020 em Scripts

13
1.8k
MattchopzM
12 de abril de 2020 às 22:39

Pessoal, 

 

Estou com um problema no meu ot que os players utilizam um item para ganhar acesso as áreas DONATE VIP (até ai tudo bem), mas quando o tempo expira eles continuam tendo acesso. 

• Não sei exatamente se minha versão do servidor é TFS 0.4 (onde olho?)

• No site aparece a contagem de VIP como -1

• Na base de dados o vip_time fica um tempo enorme, ex: 1586657498.

• Anexei também o script do item

• Se precisarem de algo mais, anexo aqui tb... é importante para mim resolver isso.

 

Obrigado desde já.

vip3dia.lua

LeoTKL
12 de abril de 2020 às 23:15
35 minutos atrás, Mattchopz disse:
Versão do Servidor: TFS - 0.4
Tipo de Script: creaturescript
Código:
  Mostrar conteúdo oculto

-- Account VIP System criado por Vitor Bertolucci - Killua

vip_storage = 13500

function getAccountVipTime(accid)
	local time_ = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `id` = '"..accid.."' LIMIT 1")
	if time_:getID() ~= -1 then
		local days = time_:getDataInt("vip_time")
		time_:free()
		return days
	end
	error("Account com id "..accid.." não existe.",2)
end

function setAccountVipTime(accid, time)
	local func = db.query or db.executeQuery
	local time_ = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `id` = '"..accid.."' LIMIT 1")
	if time_:getID() ~= -1 then
		func("UPDATE `accounts` SET `vip_time` = '"..time.."' WHERE `id` = '"..accid.."' LIMIT 1")
		return true
	end
	error("Account com id "..accid.." não existe.",2)
end

function isVipQuery(cid) -- Checa se o jogador é vip
	if getAccountVipTime(getPlayerAccountId(cid)) then
		return getAccountVipTime(getPlayerAccountId(cid)) >= os.time()
	end
	return false
end

function isVip(cid)
	return getPlayerStorageValue(cid,vip_storage) == 1
end

function doPlayerSetVipDays(cid, days)
	if days and tonumber(days) and tonumber(days) >= 0 then
		if tonumber(days) == 0 then
			return setAccountVipTime(getPlayerAccountId(cid), days)
		end
		return setAccountVipTime(getPlayerAccountId(cid), (os.time() + (days * 60 * 60 * 24)))
	else
		print(getCreatureName(cid), type(days), days)
		error("Aviso: Nao foi possivel executar a funcao doPlayerSetVipDays. O parametro days deve ser um numero.",2)
	end
end

function getPlayerVipDays(cid)
	if getAccountVipTime(getPlayerAccountId(cid)) then
		return getAccountVipTime(getPlayerAccountId(cid)) > 0 and math.ceil((getAccountVipTime(getPlayerAccountId(cid)) - os.time()) / 60 / 60 / 24) or tonumber(0)
	end
	return tonumber(0)
end

function doPlayerAddVipDays(cid,days)
	local current = getPlayerVipDays(cid)
	return doPlayerSetVipDays(cid, tonumber(current) > 0 and tonumber(current) + days or days)
end

Pessoal, 

 

Estou com um problema no meu ot que os players utilizam um item para ganhar acesso as áreas DONATE VIP (até ai tudo bem), mas quando o tempo expira eles continuam tendo acesso. 

• Não sei exatamente se minha versão do servidor é TFS 0.4 (onde olho?)

• No site aparece a contagem de VIP como -1

• Na base de dados o vip_time fica um tempo enorme, ex: 1586657498.

• Anexei também o script do item

• Se precisarem de algo mais, anexo aqui tb... é importante para mim resolver isso.

 

Obrigado desde já.

vip3dia.lua 422 B · 0 downloads

tão simples só colocar pra quando acabar o tempo teleporta eles para o templo.... só procurar aqui no fórum que tem scripts pré prontos pra isso

 

MattchopzM
12 de abril de 2020 às 23:35
19 minutos atrás, LeoTK disse:

tão simples só colocar pra quando acabar o tempo teleporta eles para o templo.... só procurar aqui no fórum que tem scripts pré prontos pra isso

Acho que me expressei mal... eles podem entrar e sair da área vip sem problemas. 

Yan OliveiraY
13 de abril de 2020 às 01:57

Sobre ter acesso a área é na pasta movements e não em creaturescripts, e ele estar conseguindo acessar a área mesmo sem vip pode ser alguma storage, mas pelo que falou do valor do vip_time, como fica maior que 0, pode ser isso que está permitindo. Precisa postar todos os scripts relacionado a esse sistema para analisar direitinho o que pode ser o problema.

MattchopzM
13 de abril de 2020 às 08:23
6 horas atrás, Yan18 disse:

Sobre ter acesso a área é na pasta movements e não em creaturescripts, e ele estar conseguindo acessar a área mesmo sem vip pode ser alguma storage, mas pelo que falou do valor do vip_time, como fica maior que 0, pode ser isso que está permitindo. Precisa postar todos os scripts relacionado a esse sistema para analisar direitinho o que pode ser o problema.

Acredito que o movements seria esse!

epicvip.lua

Yan OliveiraY
13 de abril de 2020 às 18:01
Melhor resposta
9 horas atrás, Mattchopz disse:

Acredito que o movements seria esse!

epicvip.lua 600 B · 0 downloads

 

Substitui todo código do epicvip.lua por este:

local config = {
msgDenied = "Olá "..getCreatureName(cid)..". Você não é vip donate adquira agora mesmo em nósso site: realbaiak.online",

msgWelcome = "Seja Bem Vindo a Área donate "..getCreatureName(cid)..".",
}

function onStepIn(cid, item, position, fromPosition)

	if not isPlayer(cid) then
		return true
	end

	if not isPremium(cid) then
		doTeleportThing(cid, fromPosition)
		doPlayerPopupFYI(cid, config.msgDenied)
		doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_POFF)
	return true
	
    else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, config.msgWelcome)
	return true
    end 
end

Teste e veja se ainda da para os players que não são vip passarem.

MattchopzM
13 de abril de 2020 às 19:02
55 minutos atrás, Yan18 disse:

Teste e veja se ainda da para os players que não são vip passarem

Cara acabei mudando o sistema completamente... Estou usando agora um por VIP by Mock, mas vou te dar a REP.

 

Agora estou com outro problema: 

data/talkactions/scripts/VIP/addvip.lua:9: attempt to call global 'getPlayerByName' (a nil value)
stack traceback:
	data/talkactions/scripts/VIP/addvip.lua:9: in function

Saberia me ajudar?

Yan OliveiraY
13 de abril de 2020 às 19:05
2 minutos atrás, Mattchopz disse:

Cara acabei mudando o sistema completamente... Estou usando agora um por VIP by Mock, mas vou te dar a REP.

 

Agora estou com outro problema: 

data/talkactions/scripts/VIP/addvip.lua:9: attempt to call global 'getPlayerByName' (a nil value)
stack traceback:
	data/talkactions/scripts/VIP/addvip.lua:9: in function

Saberia me ajudar?

Sim, posta o script addvip.lua

MattchopzM
13 de abril de 2020 às 19:08
2 minutos atrás, Yan18 disse:

Sim, posta o script addvip.lua

Ai está

addvipp.lua

Yan OliveiraY
13 de abril de 2020 às 19:14
5 minutos atrás, Mattchopz disse:

Acontece o erro sempre que usa o comando normal ou quando usa o comando sob alguma condição específica?

MattchopzM
13 de abril de 2020 às 19:15
Agora, Yan18 disse:

Acontece o erro sempre que usa o comando normal ou quando usa o comando sob alguma condição específica?

Sempre que eu uso

Yan OliveiraY
13 de abril de 2020 às 19:45
28 minutos atrás, Mattchopz disse:

Sempre que eu uso

Você seguiu todos os passos certinhos na instalação desse sistema? Pois vi aqui que ele é bem chatinho e fácil de dar problema, e várias pessoas que usam TFS 0.4 deram problema, que no caso pelo que vi no tópico é a mesma versão do seu.

MattchopzM
13 de abril de 2020 às 23:52
4 horas atrás, Yan18 disse:

Você seguiu todos os passos certinhos na instalação desse sistema? Pois vi aqui que ele é bem chatinho e fácil de dar problema, e várias pessoas que usam TFS 0.4 deram problema, que no caso pelo que vi no tópico é a mesma versão do seu.

Creio que sim. De um modo ou outro, vou revisar os passos! Obrigado ?