• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] HomeStone script for TFS 1.1

    Compartir:

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

    1[Sistema] HomeStone script for TFS 1.1 Empty [Sistema] HomeStone script for TFS 1.1 Jue Abr 09, 2015 1:05 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Hola Usuarios de tibiaface

    hoy traigo un sistema home stone o teleport town con cooldown y tiempo de espera para reutilizar.

    INSTALACION:

    en nuestra carpeta data crearmos dos archivo nuevos archivos .lua
    podemos copiar el el archivo compat.lua dos veces y renombramos por:

    exhaust.lua


    Código:
    function exhaust(cid, storevalue, exhausttime)
    -- Returns 1 if not exhausted and 0 if exhausted  
        newExhaust = os.time()
        oldExhaust = getPlayerStorageValue(cid, storevalue)
        if (oldExhaust == nil or oldExhaust < 0) then
            oldExhaust = 0
        end
        if (exhausttime == nil or exhausttime < 0) then
            exhausttime = 1
        end
        diffTime = os.difftime(newExhaust, oldExhaust)
        if (diffTime >= exhausttime or diffTime < 0) then
            setPlayerStorageValue(cid, storevalue, newExhaust)
            return 1
        else
            return 0
        end
    end

    allowmovement.lua

    Código:
    local function allowMovementEvent(cid, allow, oldPosition)
        local creature = Creature(cid)
        if not creature then
            return false
        end

        if allow then
            return stopEvent(event)
        else
            stopEvent(event)
        end

        creature:teleportTo(oldPosition, true)
        creature:sendCancelMessage('You cannot move.')
      
        event = addEvent(allowMovementEvent, 100, cid, allow, oldPosition)
    end

    function Creature.allowMovement(self, allow)
        allowMovementEvent(self:getId(), allow, self:getPosition())
    end


    luego añadimos dos tag a nuestro global.lua en las primeras linea pegamos esto.



    Código:
    dofile('data/exhaust.lua')
    dofile('data/allowmovement.lua')



    Luego nos vamos a actions/scripts y copiamos cualquier archivo y renombramos por homestone.lua y pegamos esto dentro


    Código:
    local config = {
    waittime = 10, -- time in seconds to use homestone again.
    storage = 2301, -- storage for `waittime`
    level = 50, -- after this level you CANT use homestone.
    cooldown = 5 -- how many seconds character must wait after use stone until get teleported.
    }

    function onUse(cid, item, fromPosition, target, toPosition, isHotkey)

    local player = Player(cid)
    local pos = player:getPosition()

    if (player:getLevel() >= config.level) then
                player:sendCancelMessage('Only players under ' .. config.level .. ' can use homestone!')
                pos:sendMagicEffect(3)
    else
    if player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) then
                player:say('I cant do that in fight!', TALKTYPE_MONSTER_SAY)
                player:sendCancelMessage('You cannot use homestone while you during a fight!')
                pos:sendMagicEffect(3)
    else
          
      
            if(exhaust(cid, config.storage, config.waittime) == 0) then
          
            local time = ((os.difftime(oldExhaust, newExhaust))-(50))
            local hours, minutes, seconds = math.floor (time / 3600), math.floor ((time - ((math.floor (time / 3600)) * 3600))/ 60), time - ((math.floor (time/60)) * 60)
            if time >= 3600 then
            text = hours.." "..(hours > 1 and "hours" or "hour")..", "..minutes.." "..(minutes > 1 and "minutes" or "minute").." and "..seconds.." "..(seconds > 1 and "seconds" or "second")
            elseif time >= 120 then
            text = minutes.." "..(minutes > 1 and "minutes" or "minute").." and "..seconds.." "..(seconds > 1 and "seconds" or "second")
            else
            text = seconds.." "..(seconds > 1 and "seconds" or "second")
            end
          
                player:sendCancelMessage('You need to wait ' .. text .. ' before you can use homestone again.')
                pos:sendMagicEffect(3)
            else

        function tped(cid)
            local player = Player(cid)
            local destination = player:getTown():getTemplePosition()
            local homeid = (getPlayerTown(player))
            local pos = player:getPosition()
                if not player then
                    return false
                end
            item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "This stone can teleport player (under " .. config.level .. " level) to his home. \n Current home: "..getTownName(homeid)..".")
            pos:sendMagicEffect(40)
            player:teleportTo(destination)
            destination:sendMagicEffect(40)
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have succesfully teleported to ' .. getTownName(homeid) .. '.')
            exhaust(cid, config.storage, config.waittime)
            setPlayerStorageValue(cid, 2302, 0)
            player:allowMovement(true)
        return true
        end
      
            addEvent(tped, (config.cooldown * 1000), cid)
            pos:sendMagicEffect(40)
            setPlayerStorageValue(cid, 2302, 1)
            player:allowMovement(false)
      
            end -- end re-use
      
    end -- end pzlock
    end -- end levelcap

        return true
    end -- end function

    configuracion:
    Código:

    local config = {
    waittime = 10, -- time in seconds to use homestone again.
    storage = 2301, -- storage for `waittime`
    level = 50, -- after this level you CANT use homestone.
    cooldown = 5 -- how many seconds character must wait after use stone until get teleported.
    }


    en actions.xml añadimos esta tag:

    Código:
    <action itemid="YOUR ITEMID" script="homestone.lua"/>

    no se olviden de colocar el id de la piedra o objeto que lo teletransportara

    En nuestra carpeta data/creaturescripts/script copiamos cualquier archivo y renombramos por homestonefx.lua y pegamos esto dentro

    Código:
    function onThink(cid)
    local player = Player(cid)
    if (getPlayerStorageValue(cid, 2302) == 1)  then
    player:getPosition():sendMagicEffect(40)
    end
    return true
    end

    en la misma carpeta buscamos login.lua y añadimos esta linea:

    Código:
    player:registerEvent("Homestonefx")


    Luego nos vamos a data/creaturescripts/creaturescripts.xml y añadimos esta tag


    Código:
    <event type="think" name="Homestonefx" script="homestonefx.lua"/>


    y listo.



    creditos: Fresh



    [Sistema] HomeStone script for TFS 1.1 YNU5B25
    http://www.tibiaface.com

    Invitado

    Anonymous
    Invitado
    Buen aporte maya, muy util.. No tendras uno para tfs 1.0?

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Vancinis escribió:Buen aporte maya, muy util.. No tendras uno para tfs 1.0?

    Vancinis tfs 1.0 lee tfs 1.1 puedes probarlo



    [Sistema] HomeStone script for TFS 1.1 YNU5B25
    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).