• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] sistema vip tfs 0.3.7/0.4.0

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default [Sistema] sistema vip tfs 0.3.7/0.4.0 el Mar Jun 23, 2015 12:06 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    Hola usuarios de tibiaface

    sistema vip tfs 0.3.7/0.4.0


    Empesemos

    Vayanse a data/lib copie un archivo .lua y renombralo asi 049-vipsys.lua y pega todo esto adentro

    Código:
    vip = {
       name = "Vip system";
       author = "Mock";
       version = "1.0.0.0";
       query="ALTER TABLE `accounts` ADD `vip_time` INTEGER";
       query2="ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL"
    }

    function vip.setTable()
       dofile('config.lua')
       if sqlType == "mysql" then
          db.executeQuery(vip.query)
       else
            db.executeQuery(vip.query2)
       end
    end

    function vip.getVip(cid)
             assert(tonumber(cid),'Parameter must be a number')
             if isPlayer(cid) == FALSE then error('Player don\'t find') end;
             ae =  db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';")
             if ae:getID() == -1 then
                return 0
             end

    local retee = ae:getDataInt("vip_time") or 0
    ae:free()
             return retee
    end

    function vip.getVipByAcc(acc)
             assert(acc,'Account is nil')
             local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';")
             if a:getID() ~= -1 then
                 return a:getDataInt("vip_time") or 0, a:free()
             else
                 error('Account don\'t find.')
             end
    end

    function vip.setVip(cid,time)
             dofile("config.lua")
             assert(tonumber(cid),'Parameter must be a number')
             assert(tonumber(time),'Parameter must be a number')
             if isPlayer(cid) == FALSE then error('Player don\'t find') end;
             db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';")
    end

    function vip.getVipByAccount(acc)
             assert(acc,'Account is nil')
             return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0
    end                                      

    function vip.hasVip(cid)
             assert(tonumber(cid),'Parameter must be a number')
             if isPlayer(cid) == FALSE then return end;
             local t = vip.getVip(cid) or 0
             if os.time(day) < t then
                return TRUE
             else
                return FALSE
             end
    end

    function vip.hasVips(cid)
             assert(tonumber(cid),'Parameter must be a number')
             if isPlayer(cid) == FALSE then return end;
             local t = vip.getVip(cid)
             if os.time(day) < t then
                return TRUE
             else
                return FALSE
             end
    end

    function vip.accountHasVip(acc)
             assert(acc,'Account is nil')
             if os.time() < vip.getVipByAccount(acc) then
                return TRUE
             else
                return FALSE
             end
    end
    function vip.getDays(days)
       return (3600 * 24 * days)
    end

    function vip.addVipByAccount(acc,time)
       assert(acc,'Account is nil')
       assert(tonumber(time),'Parameter must be a number')
       local a = vip.getVipByAcc(acc)
       a = os.difftime(a,os.time())
       if a < 0 then a = 0 end;
       a = a+time
       return vip.setVipByAccount(acc,a)
    end

    function vip.setVipByAccount(acc,time)
             dofile("config.lua")
             assert(acc,'Account is nil')
             assert(tonumber(time),'Parameter must be a number')
             db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';")
             return TRUE
    end

    function vip.returnVipString(cid)
       assert(tonumber(cid),'Parameter must be a number')
       if isPlayer(cid) == TRUE then
          return os.date("%d %B %Y %X ", vip.getVip(cid))
       end
    end


    ahora vayan abrir data/craturescripts/scripts copien un archivo.lua y renombralo para vip.lua dentro pongan


    Código:
    function onLogin(cid)
            local temple = { x =32369, y = 32246, z = 6}
            if vip.hasVip(cid) == true then
                    if getPlayerStorageValue(cid,55555) ~= 1 then
                            setPlayerStorageValue(cid,55555,1)
                    end
            else
                    if getPlayerStorageValue(cid,55555) == 1 then
                            doTeleportThing(cid, temple)
                            doPlayerSendTextMessage(cid, 22, "Your VIP Time over!")
                            db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = "..

    getAccountIdByName(getPlayerName(cid)) ..";")
                            setPlayerPromotionLevel(cid, 1)
                            setPlayerStorageValue(cid, 55555, 0)
                    end
            end
            return true
    end


          local temple = { x =32369, y = 32246, z = 6} aqi pongan las cordenadas de su templo


    ahora copien otro archivo.lua y renombrenlo como vipexp.lua y dentro ponen

    Código:
    function onLogin(cid)
     
    local rate = 1.5 -- 50%
    local config = {
    vip = "you receive "..((rate - 1)*100).."% more experience now!",
    notvip = "become a VIP account "..((rate - 1)*100).."% more experience!",
    }
     
    if vip.hasVip(cid) == FALSE then  
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.notvip)
    else
    doPlayerSetExperienceRate(cid, rate)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.vip)
    end
    return TRUE
    end

    aqui pueden configurar el porcentaje: local rate = 1.5 -- 50%  si ponen 2, seria doble exp

    ahora copien otro archivo.lua y renombrenlo como endvip.lua y dentro pongan

    Código:
    --[[ by vodkart ]]--
    function onLogin(cid)

    if vip.hasVip(cid) == TRUE then
    setPlayerStorageValue(cid, 9898, 1)
    elseif getPlayerStorageValue(cid, 9898) == 1 and vip.hasVip(cid) == FALSE and vip.getVip(cid) == 0 then
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    doPlayerPopupFYI(cid, "ah finished your VIP account.")
    setPlayerStorageValue(cid, 9898, -1)
    end
    return TRUE
    end


    ahora copien un ultimo archivo.lua y lo renombran como vipdays.lua dentro ponen

    Código:
        function onLogin(cid)
                 if vip.hasVip(cid) == TRUE then
                    doPlayerSendTextMessage(cid,

        MESSAGE_STATUS_CONSOLE_BLUE, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid)))
                 else
                     if

        vip.getVip(cid) ~= 0 then
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "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, MESSAGE_STATUS_CONSOLE_BLUE, "Youre not a vip player. You naver

        has a vip.")
                     end
                 end
                 return TRUE
        end

    ahora vayanse ah data/creaturescripts/scripts/login.lua y pongan esto dentro

                 
    Código:
     registerCreatureEvent(cid, "FimVip")
                    registerCreatureEvent(cid, "VipReceive")
                    registerCreatureEvent(cid, "ExpVip")


    ahora en data/creaturescripts/creaturescripts.xml pongan esto

    Código:
    <event type="login" name="FimVip" event="script" value="vip.lua"/>
            <event type="login" name="checkvip" script="endvip.lua"/>
            <event type="login" name="fimvip" script="vipdays.lua"/>
            <event type="login" name="ExpVip" script="vipexp.lua"/>


    ahora se van ah data\movements\scripts copien un archivo.lua y lo renombran como viptile.lua dentro ponen

    Código:
    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!",
       enterEffect = CONST_ME_MAGIC_GREEN,
    }

    if isPlayer(cid) == true then  
    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
    end

    y en data\movements\movements.xml pongan esta linea

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



    actionid="13500" esta es la action que ira en el piso que solo podran pasar los vip player

    ahora nos vamos ah data/talkactions/scripts aqui crean una carpeta llamada VIP y dentro ponen 8 archivos.lua

    add.lua

    Código:
    function onSay(cid, words, param, channel)
    doPlayerSendCancel(cid, "Added "..param.." Vip Days.")
    return doPlayerAddVipDays(cid, param)
    end




    addvipp.lua

    Código:
    function onSay(cid, words, param)
                     if param == "" then
                            return  doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar

    vip:\n/vip add days player\n/vip add 30 Real\n---------------\nDeletar vip:\n/vip del player\n/vip del

    Real\n---------------\nVer a vip:\n/vip see player\n/vip see Real\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,MESSAGE_INFO_DESCR,"Adicionar vip:\n/vip add days player\n/vip

    add 30 Real\n [Player: "..name.."]")
                            end  
                            if isPlayer(getPlayerByName(name)) == TRUE then
                            vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id))

                            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Foram adicionados "..tonumber(id).." dias de vip a

    "..name..".")
                            doPlayerSendTextMessage(getPlayerByName(name),MESSAGE_INFO_DESCR,"Você recebeu "..tonumber(id).."

    dias de vip.")
                     else
                       doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,name.." não esta online ou não 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,MESSAGE_INFO_DESCR,"Deletar vip:\n/vip del player\n/vip del

    Real\n")
                            end

                            vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time())
                            doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"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,MESSAGE_INFO_DESCR,"Ver a vip:\n/vip see player\n/vip see

    Real\n")
                            end
                            local ret_ = vip.getVip(getPlayerByName(name))
                            if ret_ == 0 then
                              return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,name.." Não tem vip, e nunca teve.")
                            else
                              return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A vip de "..name.." Acaba/terminou em

    "..os.date("%d %B %Y %X ",ret_))
                            end
                     end
                     return TRUE
    end



    get.lua


    Código:
    function onSay(cid, words, param, channel)
            doPlayerSendCancel(cid, ""..getPlayerVipDays(cid).." days VIP left.")
    end


    is.lua


    Código:
    function onSay(cid, words, param, channel)
            if isPlayerVip(cid) == TRUE then
                    doPlayerSendCancel(cid, "You are a VIP player.")
            else
                    doPlayerSendCancel(cid, "You are not a VIP player.")
            end    
    end


    removevip.lua

    Código:
    function onSay(cid, words, param, channel)
            doPlayerSendCancel(cid, "Vip removed.")
            return doPlayerRemoveVip(cid)
    end


    set.lua

    Código:
    function onSay(cid, words, param, channel)
            doPlayerSendCancel(cid, "VIP Days: "..param..".")
            return setPlayerVipDays(cid, param)
    end



    vipdays.lua

    Código:
    function onSay(cid, words, param)
             if vip.hasVip(cid) == TRUE then
                doPlayerPopupFYI(cid, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid)))
             else
                 if vip.getVip(cid) ~= 0 then
                    doPlayerPopupFYI(cid, "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
                    doPlayerPopupFYI(cid, "You're not a vip player. You naver has a vip.")
                 end
             end
             return TRUE
    end


    viptest.lua


    Código:
    function onSay(cid, words, param, channel)
    local sto,lvl,days = 399710,220,3
    if getPlayerStorageValue(cid, sto) >= 1 then
    doPlayerSendCancel(cid, "You already proved your vip.") return true
    elseif getPlayerLevel(cid) < lvl then
    doPlayerSendCancel(cid, "you need to be level "..lvl.." to win vip test") return true
    end
    vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(tonumber(days)))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "was added "..tonumber(days).." vip days.")
    setPlayerStorageValue(cid, sto, 1)
    return true
    end


    local sto,lvl,days = 399710,220,3 --- aqui editan el level y los dias que quieren que de, aqui es para level 220 y agrega 3 dias


    ahora en data/talkactions/talkactions.xml pegan estas lineas

         
    Código:
    <!-- VIP System -->
            <talkaction log="yes" words="/vip" access="5" event="script" value="VIP/addvipp.lua" />
            <talkaction words="!vipdays" event="script" value="VIP/vipdays.lua" />
       <talkaction words="!viptest" event="script" value="VIP/viptest.lua" />


    ahora agregaremos el vip effect nos vamos ah data/globalevents/scripts copian un archivo.lua lo renombran como vipEffect.lua
    dentro ponen

    PARA VERSION 8.6 PONGAN ESTE SCRIPT:

    Código:
    function onThink(interval, lastExecution)
            for _, name in ipairs(getOnlinePlayers()) do
            local cid = getPlayerByName(name)
                  if not isPlayerGhost(cid) and vip.getVip(cid) >= 1 then
                      doSendMagicEffect(getPlayerPosition(cid), 27)
                      doSendAnimatedText(getPlayerPosition(cid), "VIP", TEXTCOLOR_RED)
                  end
            end
            return true
    end

    PARA VERSION MAYOR AH 8.6 HASTA 9.6 PONGAN ESTE SCRIPT:

    Código:
    function onThink(interval, lastExecution)
            for _, name in ipairs(getOnlinePlayers()) do
            local cid = getPlayerByName(name)
                  if not isPlayerGhost(cid) and vip.getVip(cid) >= 1 then
                      doSendMagicEffect(getPlayerPosition(cid), 27)
                  end
            end
            return true
    end

    y en data/goblaevents abren el archivo globalevents.xml y dentro pegan esta linea

         
    Código:
    <globalevent name="vipEffect" interval="2" script="vipEffect.lua"/>

    ahora nos vamos ah data/actions/scrips copian un archvio.lua y lo renombram como vipkey.lua dentro ponen

    Código:
    local days = 15

    function onUse(cid, item, itemEx)
            local name = getCreatureName(cid)
                    vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(days))
                    doCreatureSay(cid,"You received "..days.." days of VIP.", TALKTYPE_ORANGE_1)
                    doRemoveItem(item.uid, 1)
               return TRUE
    end





    aqui editan los dias que quieren que agrege local days = 15


    ahora en data/actions/actions.xml pegan esta linea



    Código:
    <action itemid="2344" event="script" value="vipkey.lua"/>


    aqui editan el scroll o item que quieren que de los dias vip itemid="2344"


    bien aqui agregaremos para que los players vip se les de automaticamente la segunda promotion
    se van ah data/creaturescripts/scripts copian un archivo.lua lo renombran como promovip.lua y dentro ponen

    Código:
    function onLogin(cid)  
      
    if vip.hasVip(cid) == TRUE then
    if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then  
    doPlayerSetVocation(cid,getPlayerVocation(cid)+4)  
    end
    elseif vip.hasVip(cid) == FALSE then  
    if(isInArray({9, 10, 11, 12}, getPlayerVocation(cid))) then
    doPlayerSetVocation(cid,getPlayerVocation(cid)-4)
    end
    end    
    return TRUE  
    end


    ahora en data/creaturescripts/creaturescripts.xml pegan esta linea

         
    Código:
    <event type="login" name="promovip" script="promovip.lua"/>


    OJO MUY IMPORTANTE recomiendo ponerle la segunda promo a los que ya saben mas de ots, tienen que adicionarle a todos los items las nuevas vocaciones la voc 9,10,11,12 esto es muy bueno, yo edite las nuevas voc  y les puse Vip Alchemist, Vip HEaler, Vip Archer y Vip Nightmare, y asi es mas facil identificar los players vip, pero tienen que ponerle a los spells,weapons, wands y rods, y armaduras legs, spellboks, las nuevas vocaciones,


    si usas sqlite ejecuta esta consulta en tu sqlitestudio:


    Código:
    alter table `accounts` add `vip_time` INT NOT NULL DEFAULT 0;

    para ejecutar este comando aqui les dejo una imagen de como ejecutarlo con sQLiteStudio v2.0.26

    lo que esta en circulo rojo es el primer boton que deben picar. despues pegan el codigo en donde lo puse y ahora solo pican el boton que encerre en azul





    si estas usando mysql ejecuta esta consulta en tu phpadmin

    Código:
    ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL

    creditos_:


    Mock
    Lukeskywalker
    Matheus [Eu]
    Natan Beckman
    God Remady



    Última edición por [Admin] God Maya el Miér Mayo 18, 2016 1:03 am, editado 4 veces



    Ver perfil de usuario http://www.tibiaface.com

    2default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Dom Feb 28, 2016 3:44 am

    Krapula

    avatar
    Donador User
    Donador User
    a la pu.ta maciado largo el script Very Happy Se agradece Very Happy
    Falto ponerle nada mas % mas Loot Very Happy
    y es una Golden Account

    Ver perfil de usuario http://www.facebook.com

    3default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Vie Mar 04, 2016 8:02 pm

    Rodorious

    avatar
    Miembro
    Miembro
    Gracias por el apoyo, Una pregunta maya y si quiero hacer mas de una zona vip, puedo seguir lo smismo pasos poniendo distintas nombrs s los docuemntos?

    Ver perfil de usuario http://www.indacocheas.com

    4default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Sáb Mar 05, 2016 12:32 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    Rodorious escribió:Gracias por el apoyo, Una pregunta maya y si quiero hacer mas de una zona vip, puedo seguir lo smismo pasos poniendo distintas nombrs s los docuemntos?

    creas un sqm conel if vip para que el player que sea vip solo pueda ingresar a aquella zona



    Ver perfil de usuario http://www.tibiaface.com

    5default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Sáb Mar 05, 2016 2:38 am

    Rodorious

    avatar
    Miembro
    Miembro
    Creo que no me entendiste por ejemplo, si quiero hacer sona Vip 1 zona vip 2 y zona Donadores?,

    hago 3 archivos distintos? Con 3 items distintso

    Ver perfil de usuario http://www.indacocheas.com

    6default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Sáb Mar 05, 2016 1:50 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    Rodorious escribió:Creo que no me entendiste por ejemplo, si quiero hacer sona Vip 1 zona vip 2 y zona Donadores?,

    hago 3 archivos distintos?  Con 3 items distintso


    No se puede si quieres hacer un sistema con varias vip tendrías que usar un sistema de vip por storange no por ostime



    Ver perfil de usuario http://www.tibiaface.com

    7default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Dom Mar 20, 2016 12:53 am

    Krapula

    avatar
    Donador User
    Donador User
    Código:
     [Error - CreatureScript Interface]
    [20/3/2016 0:51:48] data/creaturescripts/scripts/vip.lua:onLogin
    [20/3/2016 0:51:48] Description:
    [20/3/2016 0:51:48] data/creaturescripts/scripts/vip.lua:3: attempt to index global 'vip' (a nil value)
    [20/3/2016 0:51:48] stack traceback:
    [20/3/2016 0:51:48]    data/creaturescripts/scripts/vip.lua:3: in function <data/creaturescripts/scripts/vip.lua:1>

    Ver perfil de usuario http://www.facebook.com

    8default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Dom Jul 03, 2016 7:33 pm

    God Aries

    avatar
    Miembro
    Miembro
    y si quiera este sistema pero para usarlo como premium? que hay que cambiar?

    Ver perfil de usuario

    9default Re: [Sistema] sistema vip tfs 0.3.7/0.4.0 el Dom Jul 03, 2016 8:11 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    God Aries escribió:y si quiera este sistema pero para usarlo como premium? que hay que cambiar?

    no se podria ya el servidor cuenta con el sistema premium



    Ver perfil de usuario http://www.tibiaface.com

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).