• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    Vip Sistem Para Tfs 1.2

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

    1Resuelto Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 9:28 am

    Humox

    avatar
    Miembro
    Miembro
    Hola Alguien Tendra Vip Sistem para Tfs 1.2? para Implementar en el Global Tibia Face v20

    Gracias <3

    Ver perfil de usuario

    2Resuelto Re: Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 11:00 am

    Delux

    avatar
    SCRIPTER
    SCRIPTER
    Ejecutar en base de datos:
    Código:
    ALTER TABLE `accounts`
            ADD COLUMN `viplastday` int(10) NOT NULL DEFAULT 0 AFTER `lastday`,
            ADD COLUMN `vipdays` int(11) NOT NULL DEFAULT 0 AFTER `lastday`;


    ahora en data/creaturescripts/scripts/login.lua
    Código:
    player:loadVipData()
    player:updateVipTime()

    ahora en la carpeta Data haces un archivo llamado vipsystem.lua
    Código:
    local config = {
        -- true = player will be teleported to this position if Vip runs out
        -- false = player will not be teleported
        useTeleport = true,
        expirationPosition = Position(95, 114, 7),
     
        -- true = player will received the message you set
        -- false = player will not receive a message
        useMessage = true,
        expirationMessage = 'Your vip days ran out.',
        expirationMessageType = MESSAGE_STATUS_WARNING
    }
     
    if not VipData then
        VipData = { }
    end
     
    function Player.onRemoveVip(self)
        if config.useTeleport then
            self:teleportTo(config.expirationPosition)
            config.expirationPosition:sendMagicEffect(CONST_ME_TELEPORT)
        end
     
        if config.useMessage then
            self:sendTextMessage(config.expirationMessageType, config.expirationMessage)
        end
    end
     
    function Player.getVipDays(self)
        return VipData[self:getId()].days
    end
     
    function Player.getLastVipDay(self)
        return VipData[self:getId()].lastDay
    end
     
    function Player.isVip(self)
        return self:getVipDays() > 0
    end
     
    function Player.addInfiniteVip(self)
        local data = VipData[self:getId()]
        data.days = 0xFFFF
        data.lastDay = 0
     
        db.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', 0xFFFF, 0, self:getAccountId()))
    end
     
    function Player.addVipDays(self, amount)
        local data = VipData[self:getId()]
        local amount = math.min(0xFFFE - data.days, amount)
        if amount > 0 then
            if data.days == 0 then
                local time = os.time()
                db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i, `viplastday` = %i WHERE `id` = %i;', amount, time, self:getAccountId()))
                data.lastDay = time
            else
                db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i WHERE `id` = %i;', amount, self:getAccountId()))
            end
            data.days = data.days + amount
        end
     
        return true
    end
     
    function Player.removeVipDays(self, amount)
        local data = VipData[self:getId()]
        if data.days == 0xFFFF then
            return false
        end
     
        local amount = math.min(data.days, amount)
        if amount > 0 then
            db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` - %i WHERE `id` = %i;', amount, self:getAccountId()))
            data.days = data.days - amount
     
            if data.days == 0 then
                self:onRemoveVip()
            end
        end
     
        return true
    end
     
    function Player.removeVip(self)
        local data = VipData[self:getId()]
        if data.days == 0 then
            return
        end
     
        data.days = 0
        data.lastDay = 0
     
        self:onRemoveVip()
     
        db.query(string.format('UPDATE `accounts` SET `vipdays` = 0, `viplastday` = 0 WHERE `id` = %i;', self:getAccountId()))
    end
     
    function Player.loadVipData(self)
        local resultId = db.storeQuery(string.format('SELECT `vipdays`, `viplastday` FROM `accounts` WHERE `id` = %i;', self:getAccountId()))
        if resultId then
            VipData[self:getId()] = {
                days = result.getDataInt(resultId, 'vipdays'),
                lastDay = result.getDataInt(resultId, 'viplastday')
            }
     
            result.free(resultId)
            return true
        end
     
        VipData[self:getId()] = { days = 0, lastDay = 0 }
        return false
    end
     
    function Player.updateVipTime(self)
        local save = false
     
        local data = VipData[self:getId()]
        local days, lastDay = data.days, data.lastDay
        local daysBefore = days
        if days == 0 or days == 0xFFFF then
            if lastDay ~= 0 then
                lastDay = 0
                save = true
            end
        elseif lastDay == 0 then
            lastDay = os.time()
            save = true
        else
            local time = os.time()
            local elapsedDays = math.floor((time - lastDay) / 86400)
            if elapsedDays > 0 then
                if elapsedDays >= days then
                    days = 0
                    lastDay = 0
                else
                    days = days - elapsedDays
                    lastDay = time - ((time - lastDay) % 86400)
                end
                save = true
            end
        end
     
        if save then
            if daysBefore > 0 and days == 0 then
                self:onRemoveVip()
            end
     
            db.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', days, lastDay, self:getAccountId()))
            data.days = days
            data.lastDay = lastDay
        end
    end

    Ahora en Global.lua agregas la siguiente linea:
    Código:
    dofile('data/vipsystem.lua')


    Ahora en data/talkactions/scripts haces un archivo llamado checkvip.lua
    Código:
    function onSay(cid, words, param)
        local player = Player(cid)
     
        local days = player:getVipDays()
        if days == 0 then
            player:sendCancelMessage('You do not have any vip days.')
        else
            player:sendCancelMessage(string.format('You have %s vip day%s left.', (days == 0xFFFF and 'infinite amount of' or days), (days == 1 and '' or 's')))
        end
        return false
    end


    data/talkactions/talkactions.xml
    Código:
    <talkaction words="!checkvip" script="checkvip.lua"/>


    data/talkactions/scripts/vipcommand.lua
    Código:
    function onSay(cid, words, param)
        local player = Player(cid)
        if not player:getGroup():getAccess() then
            return true
        end
     
        local params = param:split(',')
        if not params[2] then
            player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Player is required.\nUsage:\n%s <action>, <name>, [, <value>]\n\nAvailable actions:\ncheck, adddays, addinfinite, removedays, remove', words))
            return false
        end
     
        local targetName = params[2]:trim()
        local target = Player(targetName)
        if not target then
            player:sendCancelMessage(string.format('Player (%s) is not online. Usage: %s <action>, <player> [, <value>]', targetName, words))
            return false
        end
     
        local action = params[1]:trim():lower()
        if action == 'adddays' then
            local amount = tonumber(params[3])
            if not amount then
                player:sendCancelMessage('<value> has to be a numeric value.')
                return false
            end
     
            target:addVipDays(amount)
            player:sendCancelMessage(string.format('%s received %s vip day(s) and now has %s vip day(s).', target:getName(), amount, target:getVipDays()))
     
        elseif action == 'removedays' then
            local amount = tonumber(params[3])
            if not amount then
                player:sendCancelMessage('<value> has to be a numeric value.')
                return false
            end
     
            target:removeVipDays(amount)
            player:sendCancelMessage(string.format('%s lost %s vip day(s) and now has %s vip day(s).', target:getName(), amount, target:getVipDays()))
     
        elseif action == 'addinfinite' then
            target:addInfiniteVip()
            player:sendCancelMessage(string.format('%s now has infinite vip time.', target:getName()))
     
        elseif action == 'remove' then
            target:removeVip()
            player:sendCancelMessage(string.format('You removed all vip days from %s.', target:getName()))
     
        elseif action == 'check' then
            local days = target:getVipDays()
            player:sendCancelMessage(string.format('%s has %s vip day(s).', target:getName(), (days == 0xFFFF and 'infinite' or days)))
     
        else
            player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Action is required.\nUsage:\n%s <action>, <name>, [, <value>]\n\nAvailable actions:\ncheck, adddays, addinfinite, removedays, remove', words))
        end
        return false
    end

    data/talkactions/talkactions.xml
    Código:
    <talkaction words="/vip" separator=" " script="vipcommand.lua" />

    Tiles VIP

    data/movements/movements.xml

    Código:
    <movevent event="StepIn" actionid="1500" script="viptiles.lua"/>
    <movevent event="StepIn" actionid="1501" script="viptiles.lua"/>

    data/movements/script/viptiles.lua
    Código:
    local vipPosition = Position(101, 116, 7)
     
    function onStepIn(cid, item, position, fromPosition)
        local player = Player(cid)
        if not player then
            return true
        end
     
        if item.actionid == 1500 then
            if not player:isVip() then
                player:teleportTo(fromPosition)
                fromPosition:sendMagicEffect(CONST_ME_POFF)
                player:sendCancelMessage('You do not have any vip days.')
            end
        elseif item.actionid == 1501 then
            if player:isVip() then
                player:teleportTo(vipPosition)
                player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
                vipPosition:sendMagicEffect(CONST_ME_STUN)
            else
                player:teleportTo(fromPosition)
                player:sendCancelMessage('You do not have any vip days.')
                fromPosition:sendMagicEffect(CONST_ME_POFF)
            end
        end
        return true
    end

    Puertas Vip
    data/actions/actions.xml
    Código:
    <action actionid="1502" script="vipdoors.lua"/>
    <action actionid="1503" script="vipdoors.lua"/>
    <action actionid="1504" script="vipdoors.lua"/>

    data/actions/scripts/vipdoors.lua
    Código:
    local vipPosition = Position(101, 116, 7)
     
    function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey)
        local player = Player(cid)
        if item.actionid == 1502 then
            local position = player:getPosition()
            if position.y < fromPosition.y then
                fromPosition.y = fromPosition.y + 1
            else
                fromPosition.y = fromPosition.y - 1
            end
            player:teleportTo(fromPosition)
            player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
            fromPosition:sendMagicEffect(CONST_ME_STUN)
     
        elseif item.actionid == 1503 then
            local position = player:getPosition()
            if position.x < fromPosition.x then
                fromPosition.x = fromPosition.x + 1
            else
                fromPosition.x = fromPosition.x - 1
            end
            player:teleportTo(fromPosition)
            player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
            fromPosition:sendMagicEffect(CONST_ME_STUN)
     
        elseif item.actionid == 1504 then
            if player:isVip() then
                player:teleportTo(vipPosition)
                player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
                vipPosition:sendMagicEffect(CONST_ME_STUN)
            else
                player:sendCancelMessage('You do not have any vip days.')
            end
        end
        return true
    end

    Items que dan vip
    Código:
    ItemId 10135 10 dias vip.
    ItemId 10134  30 dias vip.
    ItemId 10133 90 dias vip.

    data/actions/actions.xml
    Código:
    <action fromid="10133" toid="10135" script="vipitems.lua"/>

    data/actions/scripts/vipitems.lua

    Código:
    local vipItems = {
      -- [itemid] = amount of vip days
        [10135] = 10,
        [10134] = 30,
        [10133] = 90
    }
     
    function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey)
        local player = Player(cid)
        local days = vipItems[item.itemid]
        player:addVipDays(days)
        player:say('!* VIP! *!', TALKTYPE_MONSTER_SAY)
        player:getPosition():sendMagicEffect(CONST_ME_STUN)
        player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('You received %s vip days.', days))
        Item(item.uid):remove(1)
        return true
    end

    Creditos:

    DkAngel83



    Ver perfil de usuario http://aremst.vzpla.net

    3Resuelto Re: Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 12:01 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] ultima ves que muevo tu post la proxima los elimino aprende a utilizar el foro



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

    4Resuelto Re: Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 8:15 pm

    mathyruiz

    avatar
    Nuevo Miembro
    Nuevo Miembro
    este comando de vip, sirve para un ot de pokemon?

    Ver perfil de usuario

    5Resuelto Re: Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 8:18 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    mathyruiz escribió:este comando de vip, sirve para un ot de pokemon?

    Este sistema vio es para tfs 1.2 en la sección de sistemas hay otro que sirve para ots pokemons



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

    6Resuelto Re: Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 8:20 pm

    Delux

    avatar
    SCRIPTER
    SCRIPTER
    mathyruiz escribió:este comando de vip, sirve para un ot de pokemon?


    no amigo... este sistema es para un distro mas actualizado...
    por lo tanto en pokemon no te va a servir...



    Ver perfil de usuario http://aremst.vzpla.net

    7Resuelto Re: Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 10:11 pm

    mathyruiz

    avatar
    Nuevo Miembro
    Nuevo Miembro
    Y hay alguno para ot pokemon?

    Ver perfil de usuario

    8Resuelto Re: Vip Sistem Para Tfs 1.2 el Mar Jul 28, 2015 10:14 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    mathyruiz escribió:Y  hay alguno para ot pokemon?


    sos siego ya te escribi que busque el otro que sellama vip system mock en recursos en sistemas



    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).