KY

Vip System By Account V1.0

Por Kydrai, 04 de jul. de 2010 em Mods, funções e outros

otserv
tibia
script
5.0 (3)
177
71.3k
AlfsA
15 de julho de 2010 às 01:31

por favor postar uma Actions de uma porta vip , para este sistema

por favor vc espero ajuda obrigado

:great:

KydraiK
15 de julho de 2010 às 21:14

@Alfs

 

Action (Door)

 

Coloque actionid 15001 na door onde somente os vips poderão passar. Use a porta gate of expertise (id: 1227)

 

actions.xml:

<action actionid="15001" script="vipdoor.lua"/>

 

vipdoor.lua:

function onUse(cid, item, fromPosition, itemEx, toPosition)
if isVip(cid) == FALSE then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Somente players vip podem passar.")
else
	doTransformItem(item.uid, item.itemid + 1)
	doTeleportThing(cid, toPosition)
end
return TRUE
end

lokiado0L
16 de julho de 2010 às 19:23

Muito bom mano, +REP pra você!!

:thumbsupsmiley:

 

 

Abraço, Lokiado.

Editado Julho 16 por lokiado0

francklerpF
21 de julho de 2010 às 14:39

amigo eu uso mysql teria como ajuda?

 

como q faço pra cria essa etapa do seu tutorial

 

 

installVip() -> Cria a coluna no banco de dados para usar o sistema de vip (testei somente em sqlite, mas acredito que funcione em mysql)

 

 

abraço!

HeartBreakH
21 de julho de 2010 às 15:05

perfeito concerteza vai ajudar muitos !

KydraiK
21 de julho de 2010 às 20:37

@francklerp

Você pode usar o exemplo da talkaction para instalar ou executar o comando no mysql:

ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;

Pra executar o comando é só entrar na sua db e clicar em SQL, cola o comando e executa.

deleteraD
22 de julho de 2010 às 15:32

ta mt bom, ql a storage pra colocar no gesior?

KydraiK
22 de julho de 2010 às 16:20

@deletera

Não é por storage, se for colocar no Gesior teria que acessar a tabela viptime em accounts.

Não sei como é o Gesior, então não posso ajudar com isso.

DevilMoonD
23 de julho de 2010 às 16:57

esse erro aki em casa

 

[23/07/2010 16:57:30] Lua Script Error: [CreatureScript Interface] 
[23/07/2010 16:57:30] data/creaturescripts/scripts/viplogin.lua:onLogin

[23/07/2010 16:57:31] data/creaturescripts/scripts/viplogin.lua:2: attempt to call global 'getVipTime' (a nil value)
[23/07/2010 16:57:31] stack traceback:
[23/07/2010 16:57:31] 	data/creaturescripts/scripts/viplogin.lua:2: in function <data/creaturescripts/scripts/viplogin.lua:1>

Editado Julho 23 por DevilMoon

KydraiK
23 de julho de 2010 às 17:51

@DevilMoon

Ta falando que a função não existe.

Você precisa colocar o vipAccount.lua na pasta data/lib.

Em alguns OTs ainda precisa abrir o arquivo data/lib/data.lua e colocar:

dofile(getDataDir() .. "lib/vipAccount.lua")

DevilMoonD
23 de julho de 2010 às 18:35

Ta blz agora deu esse seguinte error

 

[23/07/2010 18:34:30] Error during getDataInt(viptime).
[23/07/2010 18:34:44] Error during getDataInt(viptime).

KydraiK
23 de julho de 2010 às 20:17

Já isso acontece porque você não instalou a tabela do db.

 

Você pode usar o exemplo da talkaction para instalar (/installvip) ou executar o comando sql no seu db:

ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;

 

Vou atualizar o tópico e colocar os possíveis erros que os usuários estão perguntado.

EDIT: Vou editar depois porque ja ta no limite de caracteres.

Editado Julho 23 por kydrai

25 de julho de 2010 às 10:41

Nao intendi, deu tudo certo aqui para mim, nao apresenta erro nos log

o script funciona normal menos o player voltar para o templo quando acabar a vip !

KydraiK
25 de julho de 2010 às 22:19

@dulpforever

Acabei de testar e funciona normalmente.

Tem certeza que colocou o script de login corretamente?

Tenta usar o script dessa forma abaixo, assim ele irá mostrar o tempo caso a vip não tenha acabado.

function onLogin(cid)
if getVipTime(cid) > 0  and isVip(cid) == FALSE then
	local townid = 1
	doPlayerSetTown(cid, townid)
	local templePos = getTownTemplePosition(getPlayerTown(cid))
	doTeleportThing(cid, templePos, false)
	setVipTime(cid, 0)
	doTeleportPlayers(cid, templePos)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!")
else
	local duration = getVipDate(cid)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))
end
return TRUE
end

marcellosM
26 de julho de 2010 às 23:32

SIMPLESMENTE perfeito...

 

REP +