Ir para conteúdo
Entre para seguir isso  
Mock

OTBR vip system!

Recommended Posts

Mock    32
Mock

Autor:bearpaw.png

Servidor testado: TFS 0.3.x+

Versao: 1.0 beta

 

Olá pessoas, eu decidi depois de algum tempo liberar o sistema vip do pharenight, que agora se chamará otnet vip system! antes de tudo você vai presisar dessa lib:

Perfect vip system lib

entre lá siga os passos, apos instalada continue nesse topico.

 

Bom já a lib instalada, esse sistema constitue de 3 scripts, 2 talks e um movement, no caso é mais um exemplo de uso dos mesmos.

As 2 talks são para verificar vip e manipular a vip, vamos começar pelas talks (Y)

Vá em talkactions.xml e adcione essas tags:

<!-- Vip sys -->
<talkaction words="!vipdays" event="script" value="vip/vipdays.lua" />
<talkaction words="/vip" access="5" event="script" value="vip/addvip.lua" />
<!-- end of vip sys tags -->

Agora vá em scripts e crie uma pasta chamada vip em segida crie um arquivo chamado vipdays.lua nessa pasta e adcione o segmento:

function onSay(cid, words, param)
        if vip.hasVip(cid) == TRUE then
           doPlayerSendTextMessage(cid, 22, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid)))
        else
            if vip.getVip(cid) ~= FALSE then
               doPlayerSendTextMessage(cid, 22, "You're not a vip player. Your vip has finished in "..os.date("%d %B %Y %X ", vip.getVip(cid)).." and now is "..os.date("%d %B %Y %X ", os.time()))
            else
               doPlayerSendTextMessage(cid, 22, "You're not a vip player. You naver has a vip.")
            end
        end
        return TRUE
end

Agora crie o addvip.lua e adcione isso nele:

function onSay(cid, words, param)
        if param == "" then
           return  doPlayerPopupFYI(cid,"Está com problemas?\n Aprenda os comandos!\n---------------\nAdcionar vip:\n/vip add days player\n/vip add 30 mock\n---------------\nDeletar vip:\n/vip del player\n/vip del mock\n---------------\nVer a vip:\n/vip see player\n/vip see mock\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,25,"Adcionar vip:\n/vip add days player\n/vip add 30 mock\n [Player: "..name.."]")
           end  
           if isPlayer(getPlayerByName(name)) == TRUE then
           vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id))

           doPlayerSendTextMessage(cid,25,"Foram adcionados "..tonumber(id).." dias de vip a "..name..".")
           doPlayerSendTextMessage(getPlayerByName(name),25,"Você recebeu "..tonumber(id).." dias de vip.")
        else
          doPlayerSendTextMessage(cid,25,name.." não esta online ou nao 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,25,"Deletar vip:\n/vip del player\n/vip del mock\n")
           end

           vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time())
           doPlayerSendTextMessage(cid,25,"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,25,"Ver a vip:\n/vip see player\n/vip see mock\n")
           end
           local ret_ = vip.getVip(getPlayerByName(name))
           if ret_ == 0 then
             return doPlayerSendTextMessage(cid, 25,name.." Não tem vip, e nunca teve.")
           else
             return doPlayerSendTextMessage(cid, 25, "A vip de "..name.." Acaba/terminou em "..os.date("%d %B %Y %X ",ret_))
           end
        end
        return TRUE
end

 

Agora eu vou usar o exemplo do script feito pelo nosso amigo Dark Billie no script vip tile

Vá em movement.xml e adcione essa tag

<movevent type="StepIn" actionid="13500" event="script" value="vipTile.lua"/>

Agora em vipTile.lua ao contrario do origina do topico eu fiz umas modificações ainda sim mantendo os creditos pro nosso dark XP, eu so coloquei esse movement pois um sistema vip é uma coisa que englobal tudo e ficaria MUITO grande, cada otserv tem seu proprio entao não da pra simplesmente fazer um pois cada pessoa quer do seu jeito Mais em fim cole isso no arquivo:

--- Script by dark billie
--- Edited by mock to otnet vip system
function onStepIn(cid, item, position, fromPosition)

local tileConfig = {
       kickPos = fromPosition,
       kickEffect = CONST_ME_POFF,
       kickMsg = "You need to be a vip player to access this area.",
       enterMsg = "Welcome to vip area. Enjoy!",
       enterEffect = CONST_ME_MAGIC_BLUE,
}

   if vip.hasVip(cid) == FALSE  then
       doTeleportThing(cid, tileConfig.kickPos)
       doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
       doPlayerSendCancel(cid, tileConfig.kickMsg)
       return
   end

       doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg)
       doSendMagicEffect(position, tileConfig.enterEffect)
       return true
end

 

:fist:

 

Apos tudo isso, entre no seu otserv com um GM e saia dando vip assim:

/vip add 30 Mock

ou deletando:

/vip del mock

Ou vendo

!vipdays

Fiquem de olho no topico eu ainda estarei atualizando. :yes:

Editado por Mock

Compartilhar este post


Link para o post
Iseme    0
Iseme

Boa cara, assim com certeza fica melhor, já que muitos não estavam entendendo como usar a Perfect Vip System Lib.

 

//Iseme

Compartilhar este post


Link para o post
Dark Billie    0
Dark Billie

*-----* Meu script aparecendo aqui...que honra ;P

 

Um cara falou que testou os tiles, não sei se você testou, mas ele disse isso:

Se nao estava testado,agora está, acabei de testar em um server aqui -- > Styller Yourots 0.6.1 Rev 01 (8.50)

 

 

Não tem link, não se preocupe =)

 

 

Virei lenhador \o/

Editado por Dark Billie
eu ia notificar pra todo mundo que virei lenhador

Compartilhar este post


Link para o post
Yurki    0
Yurki

Tive um pekeno grande problema aqui :fist:

Ta ai o erro:

[05/10/2009 13:14:33] Lua Script Error: [TalkAction Interface] 
[05/10/2009 13:14:33] data/talkactions/scripts/vip/addvip.lua:onSay

[05/10/2009 13:14:33] internalGetPlayerInfo(). Player not found

[05/10/2009 13:14:33] Lua Script Error: [TalkAction Interface] 
[05/10/2009 13:14:33] data/talkactions/scripts/vip/addvip.lua:onSay

[05/10/2009 13:14:33] data/lib/vip sys.lua:66: Parameter must be a number
[05/10/2009 13:14:33] stack traceback:
[05/10/2009 13:14:33]     [C]: in function 'assert'
[05/10/2009 13:14:33]     data/lib/vip sys.lua:66: in function 'addVipByAccount'
[05/10/2009 13:14:33]     data/talkactions/scripts/vip/addvip.lua:10: in function <data/talkactions/scripts/vip/addvip.lua:1>

Me ajuda ai meu amigo ;)

O Script do chão funfo certin, só o Add Vip que não

Obrigado.

Uso o :Styller Yourots 0.6.1 Rev 01 (8.50)

Compartilhar este post


Link para o post
Mock    32
Mock

@Yurki

já ajeitei

quando fiz esqueci que account tambem podia ser letras, vai na lib e copia dinovo, so copia nao presisa reinstala as tabelas.

Editado por Mock

Compartilhar este post


Link para o post
Yurki    0
Yurki

@Mock

Olha, reinstalei a Lib (se for a do libs/vip sys) e continua não dando certo

Tá ai o erro:

 

[05/10/2009 13:36:19] Lua Script Error: [TalkAction Interface] 
[05/10/2009 13:36:19] data/talkactions/scripts/vip/addvip.lua:onSay

[05/10/2009 13:36:19] internalGetPlayerInfo(). Player not found

[05/10/2009 13:36:19] Lua Script Error: [TalkAction Interface] 
[05/10/2009 13:36:19] data/talkactions/scripts/vip/addvip.lua:onSay

[05/10/2009 13:36:19] data/lib/vip sys.lua:66: Account is nil
[05/10/2009 13:36:19] stack traceback:
[05/10/2009 13:36:19]     [C]: in function 'assert'
[05/10/2009 13:36:19]     data/lib/vip sys.lua:66: in function 'addVipByAccount'
[05/10/2009 13:36:19]     data/talkactions/scripts/vip/addvip.lua:10: in function <data/talkactions/scripts/vip/addvip.lua:1>

Não sei oq ue tem de errado

Valeu

Abaços,

Yurki.

Compartilhar este post


Link para o post
Nighandy    0
Nighandy

E se eu quiser botar no site para aparece se o cara é vip ou não?

Compartilhar este post


Link para o post
Mock    32
Mock

@night

ai vc teria q fazer um sistema pra site.

@yurki

mls a demora.

[05/10/2009 13:36:19] data/lib/vip sys.lua:66: Account is nil

ou seja vc ta colocando

vip.addvipbyacc(nil,tempo)

nil = nada

ou seja nao vai funciona com nada.

Compartilhar este post


Link para o post
Yurki    0
Yurki
@night

ai vc teria q fazer um sistema pra site.

@yurki

mls a demora.

[05/10/2009 13:36:19] data/lib/vip sys.lua:66: Account is nil

ou seja vc ta colocando

vip.addvipbyacc(nil,tempo)

nil = nada

ou seja nao vai funciona com nada.

@Mock

Não entendi :confused:

Poderia falar de um jeito mais portugues brasileiro?:fun:

To lendo as aulas lá de scripts, to tentando aprende

Valeu

Compartilhar este post


Link para o post
Mock    32
Mock

valor nil que nao existe

vc ta fazendo exatamente isso:

setVip(,time)

tenta fazer assim na hora de adciona

acc = getPlayerAccount(player)

if acc then

vip.addVipByAccount(acc,tempo)

else

doPlayerSendTextMessage(cid,25,'Essa acc nao existe')

end

Editado por Mock

Compartilhar este post


Link para o post
Conde2    0
Conde2

Ow mock tenho algumas duvidas e sugestões xD

Tipo eu não tive tempo pra ir ver a LIB então queria saber se vip.addVipByAccount(acc,tempo) esse tempo é em minutos, horas, dias???

 

E uma sugestão pelo que eu vi só da pra adicionar seria legal se desse pra apenas editar.... Porque pelo que eu entendi ai se eu adicionar mais VIP ele somaria como que já tem xD

Compartilhar este post


Link para o post
Yurki    0
Yurki

E ai Mock? Blz? Acho que você já se cansou de mim com meus big little problemas... eu uso o Styller Yourots 8.5 0.6.1 (Forgotten 0.3.5.2576)

E é o seguinte.. Adivinha? DEU ERRO:loool:

Ta ai o log do executável:

[spoiler=Bug]

[08/10/2009 15:48:59] Lua Script Error: [TalkAction Interface] 
[08/10/2009 15:48:59] data/talkactions/scripts/vip/addvip.lua:onSay

[08/10/2009 15:48:59] data/talkactions/scripts/vip/addvip.lua:11: attempt to index global 'vip' (a nil value)
[08/10/2009 15:48:59] stack traceback:
[08/10/2009 15:48:59]     data/talkactions/scripts/vip/addvip.lua:11: in function <data/talkactions/scripts/vip/addvip.lua:1>

 

Sei lá o que deu... É igual ao outro erro? Eu não sei te dizer, meu caro amigo.

O que eu tenho que fazer? Eu só copiei e colei, tenho que mudar alguma coisa? Valeu ae... AH.. Lembrando: O movement que você colocou no seu tópico, não funfo aqui.. eu tive que pegar o do Dark Billie

Só uma viso ;)

Abraço, aguardo o retorno o mais rápido possível.

EDIT:

Daria para que colocar a VIP pela DB? Seria melhor pra mim, valeu ;*

Editado por Yurki
Adicionar pergunta

Compartilhar este post


Link para o post
edoras    0
edoras

Cara o meu tfs e o 0.3.5 e nao funfa=/..... Da pra fazer um que apareca quantos dias ainda tem no login, subistituindo o premium acc ?

E aki ta dando erro no Movements, o scrit parece q ta errado Thanks =x

Compartilhar este post


Link para o post
Mock    32
Mock

@Yurki

100% falta de interpretação sua.

nesse caso vc acabo deletando a lib.

cara refaz em passos tudo.

@edoras

Sabia que sua atitude nao ajuda em nada?

http://forums.otserv.com.br/f232/erros-nos-scripts-104381/

leia isso e tente postar dinovo

Compartilhar este post


Link para o post
patrickdelfim    0
patrickdelfim

caramba muito bom perfeito mock vc é demais eu so nao uso sua fan bar pq nao tem mas espaço na assinatura

Compartilhar este post


Link para o post
Makaveli    0
Makaveli

Mock em primeiro lugar obrigado pelo sistema está otimo me ajudou muito, aqui deu quase tudo certo mas eu nao consigo adicionar vip em players com nome composto tipo "Testa Vip"(nomes com espaço) mas se for Testavip da certo

 

EDIT: Eu achei que estava dando certo porque ingame apareceu a mensagem confirmando a VIP mas depois olhei o executavel e notei um erro

erroh.png

Na repetição de Susy foi porque eu tentei adicionar vip a um char Susy Druid, depois tentei adicionar no char Testavip

 

Eu adicionei a lib mas na hora de executar aquele comando no sqlitlestudio acho que fiz algo errado

 

Quando eu executo o comando ALTER TABLE `accounts` ADD `vip_time` INT( 15 ) NOT NULL no sqlitlestudio aparece a mensagem Error while executing query: %s

Editado por Makaveli
Notei um erro

Compartilhar este post


Link para o post
Makaveli    0
Makaveli

Para quem teve o mesmo problema que eu é so executar a outra query que está na lib ALTER TABLE `accounts` ADD `vip_time` INTEGER

Mock o problema de não adicionar vip a players com espaço no nome persiste

Compartilhar este post


Link para o post
Devo Jeff    0
Devo Jeff

Aqui funcionou certinho, nice 'system' ;D, até tentei entender os scripts, mas num dá pra mim não ^^

Compartilhar este post


Link para o post
Gorgulf    0
Gorgulf

aqui deu um errinho....

o tile n tem nada de ++, vc passa e é a msm coisa q n passo u.U

eu adiciono o vip e fala:

02:43 Foram adcionados 30 dias de vip a Matheus.

02:43 Você recebeu 30 dias de vip.

dai eu vejo qnts dias de vip eu tenho (!vipdays):
02:43 You're not a vip player. You naver has a vip.
Dai no execultavel quando eu executo o comando:
/vip add 30 Matheus
[12/10/2009 02:45:43] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such column: vip_time (UPDATE "accounts" SET "vip_time" = '1257921943' WHERE "accounts"."name" ='matheus';)
Quando eu executo o comando de checar(!vipdays)

 

[12/10/2009 02:45:43] Error during getDataInt(vip_time).
caso possa me ajudar agradeço :)

 

OBS: FIZ AS PARADA DA LIB LA, QUANDO FUI EXECUTAR APARECEU ISSO:

failpe.jpg

Compartilhar este post


Link para o post
Makaveli    0
Makaveli

[D]arkNess leia meu segundo post que voce vai ver que tive o mesmo problema e resolvi

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×