NA
talkaction

Vip System By Kekox

Por Natanael Beckman, 18 de dez. de 2010 em Actions e Talkactions

script
17
9k
Natanael BeckmanN
18 de dezembro de 2010 às 10:45

Bom, eu vou explicar o sistema... A maior parte do sistema vip usar o globalevent para remover um dia de vip a cada 24 horas, mas, e se o seu serv tem 23 horas de uptime é um problema. O dia não poderia ser removido, até eu fixar ele, agora o dia de vip será removido em uma hora específica, se você configurá-lo para duas horas, o dia vip será removido em duas horas por isso, se o serv cair para ele como 3 minutos ainda irá remover os dias vip em duas horas.

 

Ele funciona para toda a conta, assim como uma conta premium.

Testado em TheForgottenServer 0.3.6 / 0.4

Este sistema VIP contém:

 

  • Próprias funções Lua
  • Automática removedor dia.
  • OnLogin script para verificar vip.
  • Remover Comando Dias Vip.
  • Adicionar comando Dias Vip.
  • Auto teleporter templo quando vipdays mais!.

 

Agora vamos da incio ao nosso Tutorial.

 

Execute isso no seu phpmyadmin.

 

ALTER TABLE `accounts` ADD
`vipdays` int(11) NOT NULL DEFAULT 0;

 

Vai até data/lib/function.lua e adicione isto na primeira linha:

 

--- Vip functions by Kekox
function getPlayerVipDays(cid)
   local Info = db.getResult("SELECT `vipdays` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1")
       if Info:getID() ~= LUA_ERROR then
       local days= Info:getDataInt("vipdays")
       Info:free()
       return days
   end
    return LUA_ERROR
end

function doAddVipDays(cid, days)
   db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` + " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end

function doRemoveVipDays(cid, days)
   db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` - " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end

 

Vai até data/creaturescript/scripts/login.lua e registrar esse coder:

 

registerCreatureEvent(cid, "VipCheck")

 

E logo após crie um arquivo com o nome vipcheck.lua dentro de data/creaturescript/scripts/ e adicione dentro do arquivo criado este coder:

 

--- Script by Kekox
function onLogin(cid)
        if getPlayerVipDays(cid) >= 1 then
           doPlayerSendTextMessage(cid, 19, "You have ".. getPlayerVipDays(cid) .." vip days left.")
        end
        return true
end

 

E em data/creaturescript/creaturescripts.xml:

 

	<event type="login" name="VipCheck" event="script" value="vipcheck.lua"/>

 

Agora vei até data/globalevents/scripts/ crie um arquivo.lua com o nome daysremover.lua e adicione este coder ao arquivo criado:

 

--- Script by Kekox
function onTimer()
                db.executeQuery("UPDATE accounts SET vipdays = vipdays - 1 WHERE vipdays > 0;")
       return true
end

 

E logo após em data/globalevents/globalevents.xml adicione:

 

	<globalevent name="VipDaysRemover" time="00:01" event="script" value="daysremover.lua"/>

 

Você pode alterar o tempo quando: (hora = "00:01").

 

Se você tem um dia a mais ou a menos de vip, quando você fizer login vai receber uma mensagem:



2yyuyq0.png

 

VIP Tile

 

Agora vamos até data/movements/scripts/viptile.lua Adicione este coder:

 

--- Script by Kekox
function onStepIn(cid, item, position, fromPosition)
        if getPlayerVipDays(cid) == 0 then
            doTeleportThing(cid, fromPosition, FALSE)
        end
return true
end

 

E logo após em data/movements/movements.xml

 

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

 

VIP days command

 

Vai até data/talkactions/scripts/adddays.lua Adicone este coder:

 

--- Script by Kekox.
function onSay(cid, words, param, channel)
       if(param == '') then
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
               return true
       end

       local t = string.explode(param, ",")
       t[1] = tonumber(t[1])
       if(not t[1]) then
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires numeric param.")
               return true
       end

       local pid = cid
       if(t[2]) then
               pid = getPlayerByNameWildcard(t[2])
               if(not pid) then
                       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[2] .. " not found.")
                       return true
               end
       end

       if(t[1] > 365) then
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can only add max 365 vip days.")
               return true
       end

       sender = getPlayerByNameWildcard(cid)

   doAddVipDays(pid, t[1])
   doPlayerSendTextMessage(cid, "You have added ".. t[1] .." vip days to ".. t[2])
   doPlayerSendTextMessage(pid, sender .." just added you ".. t[1] .." vip days.")    
       return true
end

 

Em data/talkactions/talkactions.xml/ adicione:

 

	<talkaction log="yes" words="/adddays" access="5" event="script" value="adddays.lua"/>

 

Remove VIP days command

 

Em data/talkactions/scripts/removedays.lua adicione:

 

--- Script by Kekox fixed by Shawak.
function onSay(cid, words, param, channel)
       if(param == '') then
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
               return true
       end

       local t = string.explode(param, ",")
       t[1] = tonumber(t[1])
       if(not t[1]) then
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires numeric param.")
               return true
       end

       local pid = cid
       if(t[2]) then
               pid = getPlayerByNameWildcard(t[2])
               if(not pid) then
                       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[2] .. " not found.")
                       return true
               end
       end

       if(t[1] > 365) then
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can only add max 365 vip days.")
               return true
       end

       sender = getPlayerByNameWildcard(cid)

   doRemoveVipDays(pid, t[1])
   doPlayerSendTextMessage(cid, "You have removed ".. t[1] .." vip days to ".. t[2])
   doPlayerSendTextMessage(pid, sender .." just removed you ".. t[1] .." vip days.")    
       return true
end

 

E em data/talkactions/scripts/talkactions.xml/ adicione:

 

	<talkaction log="yes" words="/removedays" access="5" event="script" value="removedays.lua"/>

 

VIP Door

 

Em data/actions/scripts/vipdoor.lua adicione:

 

function onUse(cid, item, frompos, item2, topos)
        if getPlayerVipDays(cid) >= 1 then
           pos = getPlayerPosition(cid)
           if pos.x == topos.x then
              if pos.y < topos.y then
                 pos.y = topos.y + 1
              else
                 pos.y = topos.y - 1
              end
           elseif pos.y == topos.y then
                  if pos.x < topos.x then
                     pos.x = topos.x + 1
                  else
                     pos.x = topos.x - 1
                  end
           else
               doPlayerSendTextMessage(cid,22,"Stand in front of the door.")
           return true
           end
           doTeleportThing(cid,pos)
           doSendMagicEffect(topos,12)
        else
           doPlayerSendTextMessage(cid,22,'Only VIP Account can go there.')
        end
        return true
end

 

Em data/actions/actions.xml adicione:

 

	<action actionid="2112" event="script" value="vipdoor.lua"/>

 

Effect only for VIP players

 

Em globalevents/scripts/vipEffect.lua adicione:

 

function onThink(interval, lastExecution)
        for _, name in ipairs(getOnlinePlayers()) do
        local cid = getPlayerByName(name)
              if getPlayerVipDays(cid) >= 1 then
                 doSendMagicEffect(getPlayerPosition(cid), 27)
                 doSendAnimatedText(getPlayerPosition(cid), "VIP!", TEXTCOLOR_RED)
              end
        end
        return true
end

 

Em data/globalevents/globalevents.xml adicione:

 

	<globalevent name="vipEffect" interval="2" script="vipEffect.lua"/>

 

Auto temple teleporter quando VIP days acabar!

 

10° Em data/creaturescripts/scripts/templeteleport.lua adicione:

 

function onLogin(cid)
if getPlayerVipDays(cid) > 0 then
	setPlayerStorageValue(cid, 20500, 1)
elseif getPlayerVipDays(cid) == 0 and getPlayerStorageValue(cid, 20500) == 1 then
	doTeleportThing(cid, getPlayerMasterPos(cid))		
	setPlayerStorageValue(cid, 20500, -1)
end
return true
end

 

Em data/creaturescripts/scripts/login.lua register:

 

registerCreatureEvent(cid, "TempleTeleporter")

 

E em data/creaturescripts/creaturescripts.xml adicione:

 

 <event type="login" name="TempleTeleporter" event="script" value="templeteleport.lua"/>

 

Functions usadas:

 

  • getPlayerVipDays(cid) --- Usá-lo para verificar quantos dias vip o jogador tem.
  • doAddVipDays(cid, days) --- Use-o para adicionar dias vip para alguém.
  • doRemoveVipDays(cid, days) --- Use-a para remover dias vip para alguém.

 

Creditos:

Kekox

exlashE
19 de dezembro de 2010 às 12:06

Beckman, esta vip é para toda a acc e pode ser vendida pelo Gesior?

Natanael BeckmanN
22 de dezembro de 2010 às 11:55

Sim, apenas tem que saber como configurar.

3 meses depois...
blinkjfB
21 de março de 2011 às 13:29

no meu deu erro, na parte do templeteleport.lua

 

;/

ajuda ae

ta dando no such file diretory no globalevents e no creaturescripts

3 meses depois...
RafaelManR
10 de junho de 2011 às 01:30

Opa..

 

Eu estou utilizando aqui e está tudo certo. Só não testei a parte do teleport.

 

Estou procurando como faz pra integrar esse script com a compra de casas.

Apenas players VIP podem comprar casas e quando a vip acabar perde a casa. Já existe alguma coisa assim?

 

Obrigado.

 

Rafael :D

grokuG
12 de junho de 2011 às 21:49

Very good

!!!

1 mês depois...
03 de julho de 2011 às 17:34

Sim, apenas tem que saber como configurar.

 

Este sistema vip tem fly e surf so para vips?

1 mês depois...
hique86H
24 de agosto de 2011 às 16:44

1° Execute isso no seu phpmyadmin.

 

ALTER TABLE `accounts` ADD

`vipdays` int(11) NOT NULL DEFAULT 0;

 

Eu não entendi essa parte, e por isso não esta dando certo aqui, alguém por favor, pode me ajudar?!?

 

Obrigado!

1 mês depois...
daaniel13D
08 de setembro de 2011 às 15:26

OLá.

 

Teria como esse Script Mudar para Item.

 

Da um clique no Item recebe 30 Dias de vip..???

 

e Como Tile nao sei se estaa..

 

o Tile Seria 15000

Se alguem souber porfavorr Tranforma pra mim..

Gostei do Script e o eu estou procurandoo... mais sem comando.. mais me dou muitoo bem pra ficar fazendo comando para dar vip

hehehe

 

Dou Rep..

pra quem me ajudar.

osbrotO
08 de setembro de 2011 às 19:51

Ótimo script, vlw por compartilhar!

1 mês depois...
DenuvoD
07 de outubro de 2011 às 00:08

algen poderia mim dizer como fasso pra diminuir a qantidade de vip days

qando o kra cria uma nova acc ja ganha 30 dias vip .. qeria saber onde posso mudar isso obg!

2 meses depois...
LukasmapL
03 de dezembro de 2011 às 23:35
Execute isso no seu phpmyadmin.

 

ALTER TABLE `accounts` ADD

`vipdays` int(11) NOT NULL DEFAULT 0;

 

 

 

nao entendi essa parte ae!

Editado Dezembro 3 por Lukasmap

1 mês depois...
30 de janeiro de 2012 às 17:44

mano aonde fica esse phpmyadimin ? lol

9 meses depois...
leleshoL
07 de outubro de 2012 às 19:48

Como funciona esse phpmyadimin?

3 meses depois...
XviniXX
16 de janeiro de 2013 às 04:02

Mano me ajuda...onde fica a area vip? eu ja tinha que ter uma no meu map?..

Alguem pode me passar uma area vip e me explicar como eu do vip pra um player?