Open Tibia Servidores
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Open Tibia Servidores


 
InícioInício  Últimas imagensÚltimas imagens  RegistarRegistar  EntrarEntrar  
Radio BestRock (Portugal)
Entrar
Nome de usuário:
Senha:
Entrar automaticamente: 
:: Esqueci-me da senha
Parceiros
A maior radio de Portugal




Últimos assuntos
» [Monster Editor 8.4]
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeDom Out 19, 2014 9:52 pm por cadinho1966

» Bem vindos ao Evolution Soft ! Inaugurado 30/06 Evolution Soft ONLINE
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeSex Ago 03, 2012 2:11 pm por vitinhomob

» Reign of Chaos OT - 8.60 - 5x
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeDom Dez 18, 2011 5:53 pm por thiagomacedo126

» Open Tibiaot
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeSex Out 14, 2011 1:24 pm por powertx

» NOVO: Servidor Inovador = Saiba Mais...
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeQui Out 06, 2011 5:47 pm por piropo13

» TibioniX 8.7
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeQua Abr 20, 2011 3:38 pm por wraduanw

» NEW SERVER
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeQui Fev 24, 2011 8:24 pm por graaube

» Team Grups Games Server 2010 Nova Hera GUNZBEST!
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeTer Jul 13, 2010 1:55 am por Power

» Tgg Hard Serve 24Hrs! Servidor seriO!
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeTer Jul 13, 2010 1:54 am por Power

» Tgg Hard Serve 24Hrs! Servidor seriO!
[8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeTer Jul 13, 2010 1:53 am por Power

Procurar
 
 

Resultados por:
 
Rechercher Pesquisa avançada

 

 [8.4]Sistema Vip Por Sql Para Tfs 2.0

Ir para baixo 
AutorMensagem
Admin
Ranking
Admin


Mensagens : 28
Pontos : 88
Reputação : 0
Data de inscrição : 29/07/2009
Idade : -7975
Localização : OTSERV

[8.4]Sistema Vip Por Sql Para Tfs 2.0 Empty
MensagemAssunto: [8.4]Sistema Vip Por Sql Para Tfs 2.0   [8.4]Sistema Vip Por Sql Para Tfs 2.0 Icon_minitimeSex Jul 31, 2009 3:45 am

Nome: Sistema Vip Por Sql Para Tfs
.
Versão: 2.0
.
Tipo do script: action, talkaction
.
Servidor Testado: Tfs 0.3.3.147
.
Autor: Luke sky walker

Comentario: Sistema vip que tem por finalidade facilitar a vida dos ADMs de Otserv fácil fazer e configurar mas vamos deixar de conversinha e vamos ao script!

Bom vamos começa primeiro adicionando as tabelas para indicar se o player é vip ou não, tabela que mostra a quantidade de dias e a tabela de define o tempo da vip.

Va em seu MySQL e use este query.


Código:
ALTER TABLE `accounts` ADD `vip` TINYINT( 1 ) NOT NULL DEFAULT '0';
ALTER TABLE `accounts` ADD `vip_days` INT( 11 ) NOT NULL DEFAULT '0';
ALTER TABLE `accounts` ADD `vip_time` INT( 11 ) NOT NULL DEFAULT '0';

Ah tinha esquecido em que parte do mysql faça como está na ss para adicionar a query![8.4]Sistema Vip Por Sql Para Tfs 2.0 Imagem10


Agora vamos colocar a talkaction para poder adicionar a vip e verificar quantos dia de vip dos players.
Va em "Data/Talkactions/Talkactions.xml" e adicione.

Código:
    <talkaction log="yes" words="/addvip" 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 "Data/Talkactions/Scripts" e coloque este codigo abaixo.

Código:
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 Data[2] then
                    if (words:sub(2, 2) == "a") then
                        if isNumber(Data[2]) == TRUE then
                            if vipTimeByName(Data[1]) == 0 then
                                db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * ".. Data[2] .." + ".. os.time() .." WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";")
                            else
                                db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * ".. Data[2] ..") WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";")
                            end
                            db.executeQuery("UPDATE `accounts` SET `vip` = 1 WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) .." LIMIT 1;")
                            db.executeQuery("UPDATE `accounts` SET `vip_days` = `accounts`.`vip_days` + ".. Data[2] .." WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";")
                            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi adicionado ".. Data[2] .." dias de vip ao player ".. Data[1] ..".")
                        else
                            doPlayerSendCancel(cid, "Insira apenas numeros.")
                        end
                    else
                        doPlayerSendCancel(cid, "Para verificar uma vip não presisa inserir os dias.")
                    end
                else
                    if (words:sub(2, 2) == "c") then
                        if vipDaysByName(Data[1]) == 0 then
                            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." não é vip.")
                        elseif vipDaysByName(Data[1]) == 1 then
                            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." tem ".. vipDaysByName(Data[1]) .." dia de vip.")
                        else
                            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player ".. Data[1] .." tem ".. vipDaysByName(Data[1]) .." dias de vip.")
                        end
                    else
                        doPlayerSendCancel(cid, "Insira a quantidade de dias que vai adicionar de vip ao player.")
                    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 vamos em "Data/Libs" e vamos adicionar em "Data.lua" na ultima linha.É NEGO NUM É FACIL lol!

Código:
dofile(getDataDir() .. "Lib/Vip_Functions.lua")

Agora vamos criar um script chamado "Vip_Functions.lua" na pasta "Data/Libs" e colocar este codigo abaixo.

Código:
function vipDays(cid)
    local Query = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
    local vip_days = Query:getDataInt("vip_days")
    return vip_days
end

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

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

function haveVipDaysByName(cid)
    local Query = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `accounts`.`id` = ".. getAccountIdByName(cid) ..";")
    local vip_days = Query:getDataInt("vip_days")
    return (isPlayer(cid) == TRUE and (vip_days > 0)) and TRUE or FALSE
end

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 haveVipTime(cid)
    local Query = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
    local vip_time = Query:getDataInt("vip_time")
    return (isPlayer(cid) == TRUE and (vip_time >= 1)) and TRUE or FALSE
end

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

function vipTime(cid)
    local Query = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
    local vip_time = Query:getDataInt("vip_time")
    return vip_time
end

Agora iremos colocar os creture script que faz a remoção automatica dos dias da vip e teleporta os chars para o temple quando acaba a vip!

Vamos em "Data\Creaturescripts" e abriremos o script "Login.lua" e adicione o codigo abaixo.

Código:
if vipTime(cid) >= 1 then
        if vipTime(cid) >= os.time() then
db.executeQuery("UPDATE `accounts` SET `vip_days` = ".. (vipTime(cid) - os.time()) / 86400 .." WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
        else
            db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
            db.executeQuery("UPDATE `accounts` SET `vip_days` = 0 WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
        end
    end
    if haveVipDays(cid) == FALSE then
        if isVip(cid) == TRUE then
            db.executeQuery("UPDATE `players` SET `town_id` = 1, `posx` = X, `posy` = Y, `posz` = Z WHERE `players`.`account_id` = ".. getPlayerAccountId(cid) ..";")
            db.executeQuery("UPDATE `accounts` SET `vip` = '0' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
            local Position = getTownTemplePosition(1)
            doTeleportThing(cid, Position)
            doSendMagicEffect(Position, 10)
            doPlayerSetTown(cid, 1)
        end
    end
OBS = Coloque as coordenadas do templo da cidade principal.
OBS = Coloque ID da cidade principal.

Agora iremos cria uma action que no tile que tiver o actionID 1000 tera que ser player vip para passar por ele.
Va em Movements.xml e adicione.

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

Agora crie um scripts chamado Viptile.lua na pasta scripts

Código:
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

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

Exemplo de como adicionar uma vip de 10 dias
/addvip Luke sky walker, 10

Exemplo de como verificar se o player é vip e quantos dias de vip ele tem ainda.
/checkvip Luke sky walker

OBS: Este sistema serve tambem para players offline como online pois é direto por SQL.
Detalhe eu so fiz testes basicos não usei ele em server que fica online então se acharem algum erro reporte par min.

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


Créditos

Admin
Ir para o topo Ir para baixo
https://open-tibia.umforum.net
 
[8.4]Sistema Vip Por Sql Para Tfs 2.0
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» [TalkAction] Novo Sistema [8.4+]
» Donwload Tibia bot ng e tibia mc para tibia 8.52

Permissões neste sub-fórumNão podes responder a tópicos
Open Tibia Servidores :: Downloads :: [Scripting]Download-
Ir para: