Ir para conteúdo

jhubber

Posts Recomendados

Galera do XTibia boa tarde.

Estou procurando um script para por no meu OT onde apenas o GOD possa esta dando VIP para os player.

E também queria saber como faço para que os comando seja executado apenas para player VIP

Se alguém puder esta divulgado o scrip eu agradeço muito.

versão do Tibia: 8.60
Servidor utilizado: Baiak
Nível de experiência: 15x

Editado por jhubber
Link para o comentário
Compartilhar em outros sites

@@jhubber,

 

Vá em data/lib e crie um arquivo chamado 049-vipsys.lua com o seguinte conteúdo:

 

vip = {
	name = "VIP System",
	author = "Mock",
	version = "1.0.0.0"
}

function vip.getVip(cid)
	assert(tonumber(cid),'Parameter must be a number')
	if isPlayer(cid) == false then error('Player don\'t find') end
	ae = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';")
	if ae:getID() == -1 then
		return 0
	end

	local retee = ae:getDataInt("vip_time") or 0
	ae:free()
	return retee
end

function vip.getVipByAcc(acc)
	assert(acc,'Account is nil')
	local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';")
	if a:getID() ~= -1 then
		return a:getDataInt("vip_time") or 0, a:free()
	else
		error('Account don\'t find.')
	end
end

function vip.setVip(cid,time)
	dofile("config.lua")
	assert(tonumber(cid),'Parameter must be a number')
	assert(tonumber(time),'Parameter must be a number')
	if isPlayer(cid) == false then error('Player don\'t find') end
	db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time() + time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';")
end

function vip.getVipByAccount(acc)
	assert(acc,'Account is nil')
	return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0
end

function vip.hasVip(cid)
	assert(tonumber(cid),'Parameter must be a number')
	if isPlayer(cid) == false then return end
	local t = vip.getVip(cid) or 0
	if os.time(day) < t then
		return true
	else
		return false
	end
end

function vip.hasVips(cid)
	assert(tonumber(cid),'Parameter must be a number')
	if isPlayer(cid) == false then return end
	local t = vip.getVip(cid)
	if os.time(day) < t then
		return true
	else
		return false
	end
end

function vip.accountHasVip(acc)
	assert(acc,'Account is nil')
	if os.time() < vip.getVipByAccount(acc) then
		return true
	else
		return false
	end
end

function vip.getDays(days)
	return (3600 * 24 * days)
end

function vip.addVipByAccount(acc,time)
	assert(acc,'Account is nil')
	assert(tonumber(time),'Parameter must be a number')
	local a = vip.getVipByAcc(acc)
	a = os.difftime(a,os.time())
	if a < 0 then a = 0 end
	a = a+time
	return vip.setVipByAccount(acc,a)
end

function vip.setVipByAccount(acc,time)
	dofile("config.lua")
	assert(acc,'Account is nil')
	assert(tonumber(time),'Parameter must be a number')
	db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';")
	return true
end

function vip.returnVipString(cid)
	assert(tonumber(cid),'Parameter must be a number')
	if isPlayer(cid) == true then
		return os.date("%d %B %Y %X ", vip.getVip(cid))
	end
end

 

 

Agora vamos ao comando de adicionar vip...

 

Vá em data/talkactions/talkactions.xml e adicione a seguinte tag:

<talkaction log="yes" words="/vip" access="5" event="script" value="vipsystem.lua" />
Agora em data/talkactions/scripts crie um arquivo chamado vipsystem.lua com o seguinte conteúdo:

 

function onSay(cid, words, param)
	if param == "" then
		return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar vip:\n/vip add days player\n/vip add 30 Real\n---------------\nDeletar vip:\n/vip del player\n/vip del Real\n---------------\nVer a vip:\n/vip see player\n/vip see Real\n---------------\n")
	end

	if param:lower():find('add') == 1 and 3 then
		local _,_,id,name = param:lower():find('add (%d+) (.+)')
		name = name or ""
		id = tonumber(id or 1) or 1
		if tonumber(id) == nil or getPlayerByName(name) == false then
			return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Adicionar vip:\n/vip add days player\n/vip add 30 Real\n [Player: "..name.."]")
		end
		if isPlayer(getPlayerByName(name)) == true then
			vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id))
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Foram adicionados "..tonumber(id).." dias de vip a "..name..".")
			doPlayerSendTextMessage(getPlayerByName(name),MESSAGE_INFO_DESCR,"Você recebeu "..tonumber(id).." dias de vip.")
		else
			doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,name.." não esta online ou não existe.")
		end
	elseif param:lower():find('del') == 1 and 3 then
		local _,_,name = param:lower():find('del (.+)')
		if getPlayerByName(name) == false then
			return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Deletar vip:\n/vip del player\n/vip del Real\n")
		end
		vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time())
		doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"A vip de "..name.." foi apagada.")
	elseif param:lower():find('see') == 1 and 3 then
		local _,_,name = param:lower():find('see (.+)')
		name = name or ""
		if getPlayerByName(name) == false then
			return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Ver a vip:\n/vip see player\n/vip see Real\n")
		end
		local ret_ = vip.getVip(getPlayerByName(name))
		if ret_ == 0 then
			return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,name.." Não tem vip, e nunca teve.")
		else
			return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A vip de "..name.." Acaba/terminou em "..os.date("%d %B %Y %X ",ret_))
		end
	end
	return true
end
Para saber como usar o comando, digite /vip

 

 

Para fazer comandos que somente vips porem usar, basta colocar a seguinte verificação:

if not vip.hasVip(cid) then
	return true
end
Exemplo:

function onSay(cid, words, param)
	if not vip.hasVip(cid) then
		return true
	end
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua vip acaba em " .. os.date("%d/%m/%Y",vip.getVip(cid)) .. ".")
	return true
end
Espero ter ajudado.
Link para o comentário
Compartilhar em outros sites

  • 5 weeks later...

O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...