Ir para conteúdo
  • Cadastre-se

(Resolvido)[VIP] no nome (VIP System by Account v1.0 Kydrai)


Ir para solução Resolvido por fezeRa,

Posts Recomendados

Poste seu sistema vip.

 

Mais independente do seu sistema tem esse aqui, que tu colocar o actionid no baú e da Use e ganha

TFS 0.4

function onUse(cid, item, fromPosition, itemEx, toPosition)

if item.uid == 35400 then

queststatus = getPlayerStorageValue(cid,35400)

if queststatus == -1 or queststatus == 0 then

doCreatureSay(cid, "VOcê recebeu seu beneficio por ser vip!", TALKTYPE_ORANGE_1)

db.query("UPDATE `players` SET `name` = '[Premium] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")

doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos para mudança de nome.")

doPlayerAddAddons(cid, 1)

addEvent(doRemoveCreature, 5*1000, cid, true)

setPlayerStorageValue(cid, 35400, 1)

doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYDAMAGE)

else

doPlayerSendTextMessage(cid,22,"você ja tem o [Premium] no nome.")

end

return true

end

end


E para TFS 0.3.6

function onUse(cid, item, fromPosition, itemEx, toPosition)

if item.uid == 35400 then

queststatus = getPlayerStorageValue(cid,35400)

if queststatus == -1 or queststatus == 0 then

doCreatureSay(cid, "VOcê recebeu seu beneficio por ser vip!", TALKTYPE_ORANGE_1)

db.executeQuery("UPDATE `players` SET `name` = '[Premium] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")

doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos para mudança de nome.")

doPlayerAddAddons(cid, 1)

addEvent(doRemoveCreature, 5*1000, cid, true)

setPlayerStorageValue(cid, 35400, 1)

doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYDAMAGE)

else

doPlayerSendTextMessage(cid,22,"você ja tem o [Premium] no nome.")

end

return true

end

end


Editado por tetheuscunha (veja o histórico de edições)

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites

Isso ai apenas add, mas não remove qnd vip acabar etc...

E gostaria q fosse automatico.., é o sistema do kydrai 1.0

http://www.tibiaking.com/forum/topic/34334-vip-system-by-account-10-by-kydrai/

Link para o post
Compartilhar em outros sites

Olha eu não sou scripter, então eu não sei fazer certo. Então ver se esse sistema te ajuda : http://www.tibiaking.com/forum/topic/7507-perfect-vip-system-20/

Ele e mais atualizado que esse que você utiliza.

Editado por tetheuscunha (veja o histórico de edições)

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites

As modificações são poucas, pois o Matheus ele editou o proprio sistema do Kydrai. Fazendo assim a Versão 2.0.

 

 

Achei as modificações que você deve fazer pra não alterar muita coisa, sabe o arquivo vipaccgod.lua

faça uma copia dele por segurança, ai abre ele e coloca isso dentro:

-- Script SYtem vip 2.0 --

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

if string.find(tostring(getCreatureName(cid)),"[[Vip]]") then
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, "Foram adicionados ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13540, time)
local name = getCreatureName(cid)
db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")
doRemoveCreature(cid)
end
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))
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


Ai você pode remover o vipaccplayer.lua, mais antes faça uma copia por segurança.

Editado por tetheuscunha (veja o histórico de edições)

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites

Não da mano! é super diferente.. esse v2.0 não utliza as libs, ou seja como vo colocar vip pelo site com um sistema vip que só existe por talkactions como esse q o matheus postou.

 

Olha a lib, é aqui que o script roda.

function installVip()
	if db.executeQuery("ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;") then
		print("[Vip System] Vip System instalado com sucesso!")
		return TRUE
	end
	print("[Vip System] Não foi possível instalar o Vip System!")
	return FALSE
end

-- By Account
function doTeleportPlayersByAccount(acc, topos)
	if db.executeQuery("UPDATE `players` SET `posx` = "..topos.x..", `posy` = "..topos.y..", `posz` = "..topos.z.." WHERE `account_id` = "..acc..";") then
		return TRUE
	end
	return FALSE
end

function getVipTimeByAccount(acc)
	local vip = db.getResult("SELECT `viptime` FROM `accounts` WHERE `id` = "..acc..";")
	if vip:getID() == -1 then
		print("[Vip System] Account not found!")
		return FALSE
	end
	return vip:getDataInt("viptime")
end

function setVipTimeByAccount(acc, time)
	if db.executeQuery("UPDATE `accounts` SET `viptime` = "..time.." WHERE `id` = "..acc..";") then
		return TRUE
	end
	return FALSE
end

function getVipDaysByAccount(acc)
	local vipTime = getVipTimeByAccount(acc)
	local timeNow = os.time()
	local days = math.ceil((vipTime - timeNow)/(24.83 * 60 * 60))
	return days <= 0 and 0 or days
end

function isVipAccount(acc)
	return getVipDaysByAccount(acc) > 0 and TRUE or FALSE
end

function addVipDaysByAccount(acc, days)
	if days > 0 then
		local daysValue = days * 24.83 * 60 * 60
		local vipTime = getVipTimeByAccount(acc)
		local timeNow = os.time()
		local time = getVipDaysByAccount(acc) == 0 and (timeNow + daysValue) or (vipTime + daysValue)
		setVipTimeByAccount(acc, time)
		return TRUE
	end
	return FALSE
end

function doRemoveVipDaysByAccount(acc, days)
	if days > 0 then
		local daysValue = days * 24.83 * 60 * 60
		local vipTime = getVipTimeByAccount(acc)
		local time = vipTime - daysValue
		setVipTimeByAccount(acc, (time <= 0 and 1 or time))
		return TRUE
	end
	return FALSE
end

function getVipDateByAccount(acc)
	if isVipAccount(acc) then
		local vipTime = getVipTimeByAccount(acc)
		return os.date("%d/%m/%y %X", vipTime)
	end
	return FALSE
end

-- By Player
function doTeleportPlayers(cid, topos)
	doTeleportPlayersByAccount(getPlayerAccountId(cid), topos)
end

function getVipTime(cid)
	return getVipTimeByAccount(getPlayerAccountId(cid))
end

function setVipTime(cid, time)
	return setVipTimeByAccount(getPlayerAccountId(cid), time)
end

function getVipDays(cid)
	return getVipDaysByAccount(getPlayerAccountId(cid))
end

function isVip(cid)
	return isVipAccount(getPlayerAccountId(cid))
end

function addVipDays(cid, days)
	return addVipDaysByAccount(getPlayerAccountId(cid), days)
end

function doRemoveVipDays(cid, days)
	return doRemoveVipDaysByAccount(getPlayerAccountId(cid), days)
end

function getVipDate(cid)
	return getVipDateByAccount(getPlayerAccountId(cid))
end


Eu não encontrei nenhum =/

Então alguem pode me passar um sistema vip de [VIP] e que explique como colocar no site tudo certinho? Pois sou 0 em web

Editado por Disturbbed (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Você teria que adicionar duas funções, a primeira executaria o query e adicionar o [VIP] no nome e a segunda seria uma onLogin que se os dias de vip tivessem acabado e conseguisse achar a string "[VIP]" no nome iria remover essa string e setar o novo nome sem a [VIP]

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
uma função pra adicionar a [VIP] no nome:
db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")

 e uma pra remover:

vai em data\creaturescripts\scripts\login.lua e adiciona isso antes do ultimo return true

 
if not (getVipTime(cid)) then
local name = getCreatureName(cid)
if string.find(tostring(name):lower(),"[vip]") then
local newname = string.sub(tostring(name), 7)  -- conta o nome a partir do sétimo caractere. "[VIP] God Wolf" vai virar "God Wolf"
end      
db.executeQuery("UPDATE `players` SET `name` = '".. newname .."' WHERE `id` = "..getPlayerGUID(cid)..";")
end
Editado por xWhiteWolf (veja o histórico de edições)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Mas... o

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

Eu vou colocar onde? Eu sei que posso colocar na talkaction de ADD VIP, porem eu vou utilizar no site,

teria que ser algum script que verifica se é vip e verificar se ele já tem [VIP] no nome e se não tiver ADD? e se já tiver nao fazer nada?

Acho que teria q ser algo assim '-'

Editado por Disturbbed (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

coloca no mesmo scrit que dá a vip ué

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Mas mnw se for pelo site, teria q colocar num onLogin né pra verificar o nome

Mas isso não iria add o [vip] toda vez q ele logasse?

Link para o post
Compartilhar em outros sites

pronto cara.. agora é só adicionar isso no login.lua antes do ultimo return true e acabou:

if not (getVipTime(cid)) then
local name = getCreatureName(cid)
if string.find(tostring(name):lower(),"[vip]") then
local newname = string.sub(tostring(name), 7)  -- conta o nome a partir do sétimo caractere. "[VIP] God Wolf" vai virar "God Wolf"
end      
db.executeQuery("UPDATE `players` SET `name` = '".. newname .."' WHERE `id` = "..getPlayerGUID(cid)..";")
else
local name = getCreatureName(cid)
if not (string.find(tostring(name):lower(),"[vip]")) then
db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")
end
end

Toda vez que vc logar ele vai checar se é Vip e se tem [VIP] no nome, se não tiver e for vip ele adicionar e se ele tiver e não for vip ele remove '-'

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Não deu certo '-', não da erro, nada, simplesmente nao faz nada '-' botei antes do return true do login.lua


@Edit,

Tinha que ter posto [[VIP]] invez de apenas [VIP]


@Edit dnv, invez de remover o [VIP] quando acaba, ta dando outro [VIP], ta ficando [VIP] [VIP] Nome '-' kk

Link para o post
Compartilhar em outros sites

if not (getVipTime(cid)) then
local name = getCreatureName(cid)
if string.find(tostring(name):lower(),"[[vip]]") then
local newname = string.sub(tostring(name), 7)  -- conta o nome a partir do sétimo caractere. "[VIP] God Wolf" vai virar "God Wolf"
end      
db.executeQuery("UPDATE `players` SET `name` = '".. newname .."' WHERE `id` = "..getPlayerGUID(cid)..";")
else
local name = getCreatureName(cid)
if not (string.find(tostring(name):lower(),"[[vip]]")) then
db.executeQuery("UPDATE `players` SET `name` = '[[VIP]] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")
end
end

coloca [[vip]] em todos, se mesmo assim não der certo tenta assim:

 

if not (getVipTime(cid)) then
local name = getCreatureName(cid)
if string.find(tostring(name),"[[VIP]]") then
local newname = string.sub(tostring(name), 7)  -- conta o nome a partir do sétimo caractere. "[VIP] God Wolf" vai virar "God Wolf"
end      
db.executeQuery("UPDATE `players` SET `name` = '".. newname .."' WHERE `id` = "..getPlayerGUID(cid)..";")
else
local name = getCreatureName(cid)
if not (string.find(tostring(name),"[[VIP]]")) then
db.executeQuery("UPDATE `players` SET `name` = '[[VIP]] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")
end
end

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Eu tinha feito uma forma aqui... até que deu certo, porem apenas pro 1 char da conta que loga!

Pois só da o (Vip) para o 1 char que loga, e depois se a vip acaba, ele tenta tira as 7 primeiras letras independente se tem (Vip) ou nao de todos chares da conta

local name = getCreatureName(cid)	
if isVip(cid) == TRUE then
if not string.find(tostring(getCreatureName(cid)),"[(Vip)]") then
db.executeQuery("UPDATE `players` SET `name` = '(Vip) "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")
end
else

if string.find(tostring(getCreatureName(cid)),"[(Vip)]") then
db.executeQuery("UPDATE `players` SET `name` = '"..string.sub(getCreatureName(cid), 7).."' WHERE `id` = "..getPlayerGUID(cid)..";")
end
end
Editado por Disturbbed (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

não faz sentido ser só pro primeiro char da conta que loga '-', o script é executado assim que loga e ele não tem impedimento nenhum. Outra coisa, ele só remove caso ache o if string.find(tostring(getCreatureName(cid)),"[(Vip)]") no nome do char..

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Mas aconteceu '-', o char chamava: Testando esse Carai, dai fico só "do esse Carai" IAUSHDAIUHDASDA

 

e só da o [vip] pro 1 char da conta

Link para o post
Compartilhar em outros sites
local name = getCreatureName(cid)
if (isPremium(cid)) then
if not (string.find(tostring(name):lower(),"[[vip]]")) then
db.executeQuery("UPDATE `players` SET `name` = '[VIP] ".. getCreatureName(cid).. "' WHERE `id` = "..getPlayerGUID(cid)..";")
doRemoveCreature(cid)
end
else


if string.find(tostring(name):lower(),"[[vip]]") then
local newname = string.sub(tostring(name), 7) 
db.executeQuery("UPDATE `players` SET `name` = '".. newname .."' WHERE `id` = "..getPlayerGUID(cid)..";")
doRemoveCreature(cid)
end     
end

acabei de testar e tá funcionando perfeitamente, o unico problema é o saco de relogar. Muda o isPremium por isVip e seja feliz

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo