[action] Sistema Vip Por Sql Para Tfs V1.0

Lukeskywalker
em Actions e Talkactions
  • 1
  • 2

Lukeskywalker

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/06/08Posts: 173Char no Tibia: Lady Stars Walker

Bom vamos começa primeiro adicionando a tabela para indicar se o player é vip ou não.

 

Va em seu MySQL e use este query.

 

ALTER TABLE `accounts` ADD `vip` TINYINT( 1 ) NOT NULL DEFAULT '0'

 

Agora vamos colocar a talkaction para poder colocar a vip e retirar a vip dos players.

Va em Talkactions.xml e adicione.

 

	<talkaction log="yes" words="/addvip" access="5" event="script" value="vip.lua"/>
<talkaction log="yes" words="/remvip" access="5" event="script" value="vip.lua"/>
<talkaction log="yes" words="/checkvip" access="5" event="script" value="vip.lua"/>

 

Agora crie um script chamado vip.lua na pasta scripts da pasta Talkactions e coloque este codigo abaixo.

 

function onSay(cid, words, param)
local Data = string.explode(param, ",")
if Data then
	local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = ".. db.escapeString(Data[1]) ..";")
	if Data then
		if (Target:getID() ~= -1) then
			if (words:sub(2, 2) == "a") then
				db.executeQuery("UPDATE `accounts` SET `vip` = 1 WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";")
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi adicionado a vip ao player ".. Data[1] ..".")
			elseif (words:sub(2, 2) == "r") then
				db.executeQuery("UPDATE `accounts` SET `vip` = 0 WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";")
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi removida a vip do player ".. Data[1] ..".")
			elseif (words:sub(2, 2) == "c") then
				if (isVipByName(Data[1]) == TRUE) then
					doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." é vip.")
				else
					doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." não é vip.")
				end
			end
		else
			doPlayerSendCancel(cid, "Este player ".. Data[1] .." não existe.")
		end
	end
else
	doPlayerSendCancel(cid, "Insira um nome.")
end
return TRUE
end

 

Agora que você ja tem o sistema de adicionar vip e retirar a vip do player vamos fazer duas funções que verifique se o player é vip ou não em actions.

Primeiro va em "Data/Lib/Function.lua" e adicione a seguinte função abaixo.

 

function isVip(cid)
local Query = db.getResult("SELECT `vip` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
local vip = Query:getDataInt("vip")
return (isPlayer(cid) == TRUE and (vip == 1)) and TRUE or FALSE
end

function isVipByName(cid)
local Query = db.getResult("SELECT `vip` FROM `accounts` WHERE `accounts`.`id` = ".. getAccountIdByName(cid) ..";")
local vip = Query:getDataInt("vip")
return vip
end

 

Agora vou dar um exemplo de uma action de tile que verifica se o player é vip ou não para passar por ele.

 

Va em Movements.xml e adicione.

 

<movevent type="StepIn" actionid="1000" event="script" value="Viptile.lua"/>

 

Agora iremos cria uma action que no tile que tiver o actionID 1000 tera que ser player vip para passar por ele.

Agora crie um scripts chamado Viptile.lua na pasta scripts

 

function onStepIn(cid, item, position, fromPosition)
if isVip(cid) == FALSE then
	doTeleportThing(cid, fromPosition)
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não é um player vip para poder passar por aqui.")
end
return TRUE
end

 

OBS: Este sistema serve tambem para players offline como online pois é direto por SQL

 

Espero que tenham gostado pois tive um bom trabalho para cria este script e decidi disponibiliza a vocês! que tem servidor com sistema de vip.

Por favor não tirem os creditos deste script!!!!!!!!!!

 

EDIT

 

Uma coisa pretendo melhorar este sistema para ele remover a vip automatico numa certa quantidade de dias configuravel!

 

Exemplos de como adicionar vip e remover e verificar se o player é vip.

 

Exemplo como adicionar vip

/addvip Luke sky walker

 

Exemplo como remover vip

/remvip Luke sky walker

 

Exemplo como verificar se o player é vip

/checkvip Luke sky walker

Vip.rar

makabrotaliban

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 08/01/09Posts: 331Char no Tibia: Orcshaball

Muito bom o sistema ....mas tpw o Table eh pra add no database?(to por fora de Script =D)

 

Grato a Atenção

- Xtibia.com seu site de Tibia e OTServer ! -

Lukeskywalker

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/06/08Posts: 173Char no Tibia: Lady Stars Walker

Na database.

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

lol velho, era melhor ter usado global storage value...

tipo:

global storage value base = 56874

account_vip_storage_value = acc_id+global storage value base

 

melhor do que alterar a tabela de account, pode dar bug em alguns sites, mal feitos talvez

makabrotaliban

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 08/01/09Posts: 331Char no Tibia: Orcshaball

@LukeSkywalker

 

Thanks.

 

 

vo add no meu projeto !!

- Xtibia.com seu site de Tibia e OTServer ! -

Lukeskywalker

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/06/08Posts: 173Char no Tibia: Lady Stars Walker
lol velho, era melhor ter usado global storage value...

tipo:

global storage value base = 56874

account_vip_storage_value = acc_id+global storage value base

 

melhor do que alterar a tabela de account, pode dar bug em alguns sites, mal feitos talvez

Eu acho que não daria nenhum problema em adicionar uma coluna por que no site é escolhido as colunas que iram ser usadas não a tabela intera então eu descarto o problema com sites.

mbnstar

(:
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/07Posts: 70Char no Tibia: Peppenzily

Cara funcionou mesmo valeuu aew cara mais tem um pequeno problema =/.

 

Quando vai checar o vip:

 

16:05 /checkvip GOD Jhon

16:05 O player GOD Jhon não é vip.

 

Erro TFS:

[12/04/2009 16:05:14] Error during getDataInt(vip).

 

Fica dando esse outro erro quando adiciono vip:

 

16:06 /addvip GOD Jhon

16:06 Foi adicionado a vip ao player GOD Jhon.

 

Erro TFS:

[12/04/2009 16:06:55] Error during getDataInt(vip).

[12/04/2009 16:06:55] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: near "LIMIT": syntax error (UPDATE "accounts" SET "vip" = '1' WHERE "accounts"."id" = 2 LIMIT 1;)

 

Não sei por que... e meu ot e de acc manager.

tibiaa4e

Ex amante de Tibia
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/12/05Posts: 912Gênero: MasculinoChar no Tibia: Kohzete

Uia boa ideia...

 

Porém o povo brasileiro é meio preguiçoso e acho que não irá rolar =/

 

Porém e um sistema mais seguro e pode ser adquirido pelo site por um codigo php simples

Aposentado de OTserver e Tibia

Meus melhores tutoriais
Enciclopédia Pasta Data
Tutorial de quest

Lukeskywalker

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/06/08Posts: 173Char no Tibia: Lady Stars Walker
Cara funcionou mesmo valeuu aew cara mais tem um pequeno problema =/.

 

Quando vai checar o vip:

 

16:05 /checkvip GOD Jhon

16:05 O player GOD Jhon não é vip.

 

Erro TFS:

[12/04/2009 16:05:14] Error during getDataInt(vip).

 

Fica dando esse outro erro quando adiciono vip:

 

16:06 /addvip GOD Jhon

16:06 Foi adicionado a vip ao player GOD Jhon.

 

Erro TFS:

[12/04/2009 16:06:55] Error during getDataInt(vip).

[12/04/2009 16:06:55] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: near "LIMIT": syntax error (UPDATE "accounts" SET "vip" = '1' WHERE "accounts"."id" = 2 LIMIT 1;)

 

Não sei por que... e meu ot e de acc manager.

 

tenta tirar o "LIMIT 1" tipo eu so testei em MySql então não sei se funciona em SQLITE

 

Bom eu vo dar uma revisada no script, estou pensando em postar o outro que eu fiz que é melhor você adiciona a vip por quantidade de dias e ela remove sosinha ainda estou testando aquele script.

zani123

http://HeroesOT.com
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 07/03/08Posts: 231Gênero: Masculino

Muito bom,parabéns cara!

Eu usei no meu ot,ta todo mundo gostando.

 

É rápido e prático.

 

Parabéns!

 

Surpreenda-se no melhor server. Crie sua conta e ganhe dois dias VIP e Triple EXP até os 15 resets. Junte sua team, crie uma guild e venha para a war!

 

http://www.TheHeroesOfTime.com

thumbnail_Final - Copia - Copia.jpg

 

logo thot 200 - Copia.png

Lukeskywalker

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/06/08Posts: 173Char no Tibia: Lady Stars Walker

Pessoal dei uma revisada no script podem testar caso achar algum erro pode postar o erro aqui que eu irei arrumar.

Rocky

[ADM]GRog
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/07/06Posts: 20Char no Tibia: Eckous

muito bom

mais fica dando erros

explo:esse é quando vo fala o nome pra ver se tem vip "/checkvip ****

[21/04/2009 01:59:46] Lua Script Error: [TalkAction Interface] 
[21/04/2009 01:59:46] data/talkactions/scripts/vip.lua:onSay

[21/04/2009 01:59:46] data/talkactions/scripts/vip.lua:14: attempt to call global 'isVipByName' (a nil value)
[21/04/2009 01:59:46] stack traceback:
[21/04/2009 01:59:46]	 data/talkactions/scripts/vip.lua:14: in function <data/talkactions/scripts/vip.lua:1>

 

E esse é quando passa pela pos:

[21/04/2009 01:58:36] Lua Script Error: [MoveEvents Interface] 
[21/04/2009 01:58:36] data/movements/scripts/Viptile.lua:onStepIn

[21/04/2009 01:58:36] data/movements/scripts/Viptile.lua:2: attempt to call global 'isVip' (a nil value)
[21/04/2009 01:58:36] stack traceback:
[21/04/2009 01:58:36]	 data/movements/scripts/Viptile.lua:2: in function <data/movements/scripts/Viptile.lua:1>

 

 

vlw

Animatrix Reload, uma nova éra!

 

xtibiaassinatura.jpg

Lukeskywalker

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/06/08Posts: 173Char no Tibia: Lady Stars Walker
muito bom

mais fica dando erros

explo:esse é quando vo fala o nome pra ver se tem vip "/checkvip ****

[21/04/2009 01:59:46] Lua Script Error: [TalkAction Interface] 
[21/04/2009 01:59:46] data/talkactions/scripts/vip.lua:onSay

[21/04/2009 01:59:46] data/talkactions/scripts/vip.lua:14: attempt to call global 'isVipByName' (a nil value)
[21/04/2009 01:59:46] stack traceback:
[21/04/2009 01:59:46]	 data/talkactions/scripts/vip.lua:14: in function <data/talkactions/scripts/vip.lua:1>

 

E esse é quando passa pela pos:

[21/04/2009 01:58:36] Lua Script Error: [MoveEvents Interface] 
[21/04/2009 01:58:36] data/movements/scripts/Viptile.lua:onStepIn

[21/04/2009 01:58:36] data/movements/scripts/Viptile.lua:2: attempt to call global 'isVip' (a nil value)
[21/04/2009 01:58:36] stack traceback:
[21/04/2009 01:58:36]	 data/movements/scripts/Viptile.lua:2: in function <data/movements/scripts/Viptile.lua:1>

 

 

vlw

Qual a versão de otserver que tu usa?

tu adiciono as funções no local correto?

gordo82345

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 22/04/08Posts: 1

ACTION F*** VLW MSM!!

Estava prokurando hoje exatamente isso.

Lady Heavens

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/04/09Posts: 9

Nossa esse script está muito bom eu testei aqui e funciona perfeitamente, e sobre essa possivel melhora no script que tu comento vai lançar mesmo?

  • 1
  • 2