• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Ayuda] [Ayuda] Ayuda error vip

    Compartir:

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

    1default [Ayuda] [Ayuda] Ayuda error vip el Sáb Ago 03, 2019 2:16 pm

    fabianhr1

    fabianhr1
    Nuevo Miembro
    Nuevo Miembro
    Descripcion escribió:[Ayuda] [Ayuda] Ayuda error vip Error_10



    Hola amigos, lo que pasa es que use un scrip que vi de una vip sistem para el tfs 1.2 pero me sale ese error y quisiera saber si me pueden ayudar, la verdad quedaría muy agradecido. Muchas gracias a la comunidad que la verdad ayuda de mucho Smile
    Captura del Error escribió:Imagen del error: [Ayuda] [Ayuda] Ayuda error vip Empty
    El error radica en: Actions

    2default Re: [Ayuda] [Ayuda] Ayuda error vip el Dom Ago 04, 2019 6:00 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo]

    ahi lo tienes



    [Ayuda] [Ayuda] Ayuda error vip YNU5B25
    https://www.tibiaface.com

    3default Re: [Ayuda] [Ayuda] Ayuda error vip el Dom Ago 04, 2019 11:31 pm

    fabianhr1

    fabianhr1
    Nuevo Miembro
    Nuevo Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:[Tienes que estar registrado y conectado para ver este vínculo]

    ahi lo tienes

    ese fue el sistema que use, que pena no ponerlo.

    Al momento de abrir el servidor no me da error ni nada, si no al momento de usar el item vip, me dice el error que menciono. me gustaria saber a que se debe y pues mi servidor es un forgotten server version 1.2, gracias

    4default Re: [Ayuda] [Ayuda] Ayuda error vip el Lun Ago 05, 2019 7:45 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    le modifique algunas variables prueba de nuevo

    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(player, words, param)
     
     
        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(player, words, param)
     
        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(player, item, position, fromPosition)
       
        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(player, item, fromPosition, itemEx, toPosition, isHotkey)
     
        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(player, item, fromPosition, itemEx, toPosition, isHotkey)
     
        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



    [Ayuda] [Ayuda] Ayuda error vip YNU5B25
    https://www.tibiaface.com

    5default Re: [Ayuda] [Ayuda] Ayuda error vip el Mar Ago 06, 2019 3:38 pm

    fabianhr1

    fabianhr1
    Nuevo Miembro
    Nuevo Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:le modifique algunas variables prueba de nuevo

    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(player, words, param)
     
     
        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(player, words, param)
     
        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(player, item, position, fromPosition)
       
        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(player, item, fromPosition, itemEx, toPosition, isHotkey)
     
        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(player, item, fromPosition, itemEx, toPosition, isHotkey)
     
        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


    Hola, buen dia. probé pero igual, dice lo mismo

    6default Re: [Ayuda] [Ayuda] Ayuda error vip el Mar Ago 06, 2019 10:34 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    aver prueba

    en data global.lua
    Código:




    -- player:getVipTime()
    function Player.getVipTime(self)
       local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';")
       local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0
       result.free(resultId)
       return time
    end

    -- player:isVip()
    function Player.isVip(self)
       return self:getVipTime() > os.time() and true or false
    end

    -- player:addVipDays(days)
    function Player.addVipDays(self, days)
       return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;")
    end

    -- player:removeVipDays(days)
    function Player.removeVipDays(self, days)
       return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;")
    end

    -- player:setVipDays(days)
    function Player.setVipDays(self, days)
       return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;")
    end

    -- player:removeVip()
    function Player.removeVip(self)
       db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;")
    end

    -- player:sendVipDaysMessage()
    function Player.sendVipDaysMessage(self)
       if self:isVip() then
          local vipTime = self:getVipTime() - os.time()
          local vipDays = 1 + (math.floor(vipTime / 86400))
          return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.')
       end
    end

    -- player:checkVipLogin()
    function Player.checkVipLogin(self)
       if self:getVipTime() > 0 and not self:isVip() then
          return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition())
       end
    end



    agregar a tu base de datos phpadmin

    Código:


    ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0;


    en actions

    Código:

    local days = 3

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
        player:addVipDays(days)
        player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
        player:say('You received '..days..' vip days.', TALKTYPE_MONSTER_SAY)
        item:remove(1)
    return true
    end

    Código:

    <action itemid="XXXX" script="vip.lua"/>

    xxxx -----> es el objeto que usaras para la vip



    [Ayuda] [Ayuda] Ayuda error vip YNU5B25
    https://www.tibiaface.com

    7default Re: [Ayuda] [Ayuda] Ayuda error vip el Jue Ago 08, 2019 4:45 am

    fabianhr1

    fabianhr1
    Nuevo Miembro
    Nuevo Miembro
    Hola amigo, muchas gracias, ya funciona el item y no da error pero hay un inconveniente y es que al dar los dias, en phpmyadmin no da 3 si no, da la cantidad maxima que se pueda dar en días, incluso corrigio el error con los antiguos items que se usaban pero ni con uno ni con el otro, todos dan la cantidad maxima de dias.
    De ante mano te agradezco que por 1 parte ya funciona, solo queda ese pequeño detalle que te comento.

    8default Re: [Ayuda] [Ayuda] Ayuda error vip el Jue Ago 08, 2019 8:28 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Hola amigo, muchas gracias, ya funciona el item y no da error pero hay un inconveniente y es que al dar los dias, en phpmyadmin no da 3 si no, da la cantidad maxima que se pueda dar en días, incluso corrigio el error con los antiguos items que se usaban pero ni con uno ni con el otro, todos dan la cantidad maxima de dias.
    De ante mano te agradezco que por 1 parte ya funciona, solo queda ese pequeño detalle que te comento.


    prueba asi

    Código:

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
       local AddVipDays = 15
       
          local AccID = player:getAccountId()
          if player:getVipTime() == 0 then
             db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * ".. AddVipDays .." + ".. os.time() .." WHERE `accounts`.`id` = ".. AccID ..";")
          else
             db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * ".. AddVipDays ..") WHERE `accounts`.`id` = ".. AccID ..";")
          end
          player:say('You received '..AddVipDays..' vip days.', TALKTYPE_MONSTER_SAY)
          
          player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
          item:remove(1)

       return true
    end



    [Ayuda] [Ayuda] Ayuda error vip YNU5B25
    https://www.tibiaface.com

    9default Re: [Ayuda] [Ayuda] Ayuda error vip el Vie Ago 09, 2019 4:26 pm

    fabianhr1

    fabianhr1
    Nuevo Miembro
    Nuevo Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Hola amigo, muchas gracias, ya funciona el item y no da error pero hay un inconveniente y es que al dar los dias, en phpmyadmin no da 3 si no, da la cantidad maxima que se pueda dar en días, incluso corrigio el error con los antiguos items que se usaban pero ni con uno ni con el otro, todos dan la cantidad maxima de dias.
    De ante mano te agradezco que por 1 parte ya funciona, solo queda ese pequeño detalle que te comento.


    prueba asi

    Código:

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
       local AddVipDays = 15
       
          local AccID = player:getAccountId()
          if player:getVipTime() == 0 then
             db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * ".. AddVipDays .." + ".. os.time() .." WHERE `accounts`.`id` = ".. AccID ..";")
          else
             db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * ".. AddVipDays ..") WHERE `accounts`.`id` = ".. AccID ..";")
          end
          player:say('You received '..AddVipDays..' vip days.', TALKTYPE_MONSTER_SAY)
          
          player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
          item:remove(1)

       return true
    end


    no amigo, me toco cambiarle el db.executeQuery por db.Query o no funcionaba, pero sigue dando toda la cantidad de dias vip

    10default Re: [Ayuda] [Ayuda] Ayuda error vip el Vie Ago 09, 2019 11:54 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Hola amigo, muchas gracias, ya funciona el item y no da error pero hay un inconveniente y es que al dar los dias, en phpmyadmin no da 3 si no, da la cantidad maxima que se pueda dar en días, incluso corrigio el error con los antiguos items que se usaban pero ni con uno ni con el otro, todos dan la cantidad maxima de dias.
    De ante mano te agradezco que por 1 parte ya funciona, solo queda ese pequeño detalle que te comento.


    ya lo diseñe mediante storage mañana lo publico en el foro de forma gratis


    prueba asi

    Código:

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
       local AddVipDays = 15
       
          local AccID = player:getAccountId()
          if player:getVipTime() == 0 then
             db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * ".. AddVipDays .." + ".. os.time() .." WHERE `accounts`.`id` = ".. AccID ..";")
          else
             db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * ".. AddVipDays ..") WHERE `accounts`.`id` = ".. AccID ..";")
          end
          player:say('You received '..AddVipDays..' vip days.', TALKTYPE_MONSTER_SAY)
          
          player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
          item:remove(1)

       return true
    end


    no amigo, me toco cambiarle el db.executeQuery por db.Query o no funcionaba, pero sigue dando toda la cantidad de dias vip



    [Ayuda] [Ayuda] Ayuda error vip YNU5B25
    https://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).