• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Talkactions] Sistema de Teleport - Fly de The_Pain(no es mio)

    Compartir:

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

    selenia

    avatar
    Nuevo Miembro
    Nuevo Miembro
    [Tienes que estar registrado y conectado para ver este vínculo]Es el autori original de este script. Todos los creditos son para el Very Happy!

    Bueno primero que nada quisiera agradecer a toda la comunidad que siempre esta atenta y al pendiente de todos entre si Very Happy! me encanta

    Segundo: The Pain se paso de lanza con este script esta buenisimo!!!

    Tercero: Quisiera preguntar como añadir en esos variables que el player no pueda usarlo en :

    Modo de batalla(listo-modificacion) o Solo pueda usarlo en zona de proteccion como templos o casas(aun no hecho)

    Roockgard (intente añadirle una linea para que no se pudiera usar si el player no tiene la promocion)

    Talkaction
    Código:
    ---@Tabla de destinos
    --# Las posiciones se configuran en el archivo ( creaturescripts/script )
    local destinos = {
      { name = 'Temple', inpz = true, inlvl = 0, inprmy = true },
      { name = 'Thais Depot', inpz = true, inlvl = 50, inprmy = true },
      { name = 'Venore', inpz = true, inlvl = 50, inprmy = true },
      { name = 'Skills', inpz = true, inlvl = 100, inprmy = false }
    }

    ---@Variable en segundos
    local delaySayCommand = 20
    local delaySayStorage = 77000

    ---@Talkaction Teleport por ventanas modal
    --#Devuelve boolean
    --#Modal_Window_Teleports
    function onSay(player, words, param)

    local delaySay = player:getStorageValue(delaySayStorage)
    if delaySay > os.time() then
      player:sendCancelMessage('Exaust command.')
      return false
    end

    local modalWindow = ModalWindow(1000, 'Teleporter', 'Elige a donde volar.')
    for index, destino in pairs(destinos) do
    local msg = {
      inpz = (destino.inpz and '[yes]' or '[no]'),
      inlvl = destino.inlvl,
      inprmy = (destino.inprmy and '[yes]' or '[no]')
    }
    local msgOut = '[ ' .. destino.name .. ' ]' .. msg.inpz .. ', lvl:[' .. msg.inlvl .. '], ' .. msg.inprmy
    modalWindow:addChoice(index, msgOut)
    end
    modalWindow:addButton(1, 'Go')
    modalWindow:addButton(2, 'Cancel')
    modalWindow:setDefaultEnterButton(1)
    modalWindow:setDefaultEscapeButton(2)
    player:registerEvent('WindowTeleports')
    modalWindow:sendToPlayer(player)

    return false
    end

    Creaturescript
    Código:
    ---@Tabla de destinos
      local destinos = {
        { 'Temple', Position(1000, 1000, 7), inpz = true, inlvl = 0, inprmy = false },
        { 'Depot', Position(1000, 1000, 7), inpz = true, inlvl = 50, inprmy = false },
        { 'Skills', Position(1000, 1000, 7), inpz = true, inlvl = 100, inprmy = true }
      }

      function onModalWindow(player, modalWindowId, buttonId, choiceId)
      if modalWindowId == 1000 then
      if buttonId == 1 then
      local destino = destinos[choiceId]
      if destino ~= nil then
          if destino.inpz and player:isPzLocked() then [con ayuda de The Pain(aqui yo agregue esto playerCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) then)para que el player no pudiera abusar del comando estando en medio de una batalla con un monster]
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio con Pz.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.inlvl > player:getLevel() then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio si no eres lvl' .. destino.inlvl .. '.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.inprmy and player:getPremiumDays() > 0 then (aqui yo intente remplazarlo con player:getStorageValue == 30018 then para que no se pudiera usar si el player no tenia promoted(elite-royal-elderetc, el storage 30018 lo saque de la lista de storage values donde el king te dice you are already promoted)
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio si no eres premium.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          local toPosition = destino[2]
          player:getPosition():sendMagicEffect(CONST_ME_POFF)
          player:teleportTo(toPosition, true)
          toPosition:sendMagicEffect(CONST_ME_TELEPORT)
      end
      end
      end
      return true
      end]

    Gracias por la ayuda de antemano y espero que esto nos ayude a todos Very Happy!



    Última edición por selenia el Miér Feb 21, 2018 12:17 pm, editado 3 veces (Razón : espero su respuesta chicos :D!)

    Ver perfil de usuario

    jaydeepoin

    avatar
    Nuevo Miembro
    Nuevo Miembro
    no entiendo =/

    Ver perfil de usuario
    Buenas tardes, aqui esta lo que querias

    TALKACTION
    Código:
    ---@Tabla de destinos
    --# Las posiciones se configuran en el archivo ( creaturescripts/script )
    local destinos = {
      { name = 'Temple', inpz = true, inlvl = 0, inprmy = true, promotion = 0 },
      { name = 'Depot', inpz = true, inlvl = 50, inprmy = true, promotion = 1 },
      { name = 'Skills', inpz = true, inlvl = 100, inprmy = false, promotion = 2 }
    }

    ---@Variable en segundos
    local delaySayCommand = 20
    local delaySayStorage = 77000

    ---@Talkaction Teleport por ventanas modal
    --#Devuelve boolean
    --#Modal_Window_Teleports
    function onSay(player, words, param)

    local delaySay = player:getStorageValue(delaySayStorage)
    if delaySay > os.time() then
      player:sendCancelMessage('Exaust command.')
      return false
    end

    local modalWindow = ModalWindow(1000, 'Teleporter', 'Elige a donde volar.')
    for index, destino in pairs(destinos) do
    local msg = {
      inpz = (destino.inpz and '[Pz:yes]' or '[Pz:no]'),
      inlvl = destino.inlvl,
      inprmy = (destino.inprmy and '[Premy:yes]' or '[Premy:no]'),
      promo = (destino.promotion > 0 and '[Promo:'..destino.promotion..']' or '')
    }
    local msgOut = '[ ' .. destino.name .. ' ]' .. msg.inpz .. ', lvl:[' .. msg.inlvl .. '], ' .. msg.inprmy .. ', ' .. msg.promo
    modalWindow:addChoice(index, msgOut)
    end
    modalWindow:addButton(1, 'Go')
    modalWindow:addButton(2, 'Cancel')
    modalWindow:setDefaultEnterButton(1)
    modalWindow:setDefaultEscapeButton(2)
    player:registerEvent('WindowTeleports')
    modalWindow:sendToPlayer(player)

    return false
    end



    CREATURESCRIPT
    Código:
    ---@Tabla de destinos
      local destinos = {
        { 'Temple', Position(1000, 1000, 7), inpz = true, inlvl = 0, inprmy = false, promotion = 0 },
        { 'Depot', Position(1000, 1000, 7), inpz = true, inlvl = 50, inprmy = false, promotion = 1 },
        { 'Skills', Position(1000, 1000, 7), inpz = true, inlvl = 100, inprmy = true, promotion = 2 }
      }

      local isPzNormal = function(player)
      local condition = player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT)
      return condition and true or false
      end

      local isPromotionResult = function(player)
      local vocationId = player:getVocation():getId()
      if vocationId > 8 then
          return 2
      elseif vocationId > 4 then
          return 1
      end
      return 0
      end


      function onModalWindow(player, modalWindowId, buttonId, choiceId)
      if modalWindowId == 1000 then
      if buttonId == 1 then
      local destino = destinos[choiceId]
      if destino ~= nil then
          if destino.inpz and isPzNormal(player) then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio con Pz.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.inlvl > player:getLevel() then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio si no eres lvl' .. destino.inlvl .. '.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.inprmy and player:getPremiumDays() > 0 then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio si no eres premium.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.promotion > 0 and isPromotionResult(player) < destino.promotion then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No puedes viajar a este zona, necesitas obtener un nivel de promotion mas avanzado.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          local toPosition = destino[2]
          player:getPosition():sendMagicEffect(CONST_ME_POFF)
          player:teleportTo(toPosition, true)
          toPosition:sendMagicEffect(CONST_ME_TELEPORT)
      end
      end
      end
      return true
      end



    Si necesitas hospedaje para tu servidor usa este enlace y mira las buenos planes de Windows y Linux:

    SevuOT Online, Version:10 and Custom.

    Ver perfil de usuario

    elchuvas

    avatar
    Miembro
    Miembro
    el teleport tambien funciona para la casa?

    Ver perfil de usuario
    CREATURESCRIPT :: Para las houses tambien.
    Código:
    ---@Tabla de destinos
      local destinos = {
        { 'Temple', Position(1000, 1000, 7), inpz = true, inlvl = 0, inprmy = false, promotion = 0, ishouse = true },
        { 'Depot', Position(1000, 1000, 7), inpz = true, inlvl = 50, inprmy = false, promotion = 1, ishouse = true },
        { 'Skills', Position(1000, 1000, 7), inpz = true, inlvl = 100, inprmy = true, promotion = 2, ishouse = true },
        { 'House', Position(0, 0, 0), inpz = true, inlvl = 100, inprmy = true, promotion = 2, ishouse = true }
      }

      local isPzNormal = function(player)
      local condition = player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT)
      return condition and true or false
      end

      local isPromotionResult = function(player)
      local vocationId = player:getVocation():getId()
      if vocationId > 8 then
          return 2
      elseif vocationId > 4 then
          return 1
      end
      return 0
      end


      function onModalWindow(player, modalWindowId, buttonId, choiceId)
      if modalWindowId == 1000 then
      if buttonId == 1 then
      local destino = destinos[choiceId]
      if destino ~= nil then
          if destino.inpz and isPzNormal(player) then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio con Pz.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.inlvl > player:getLevel() then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio si no eres lvl' .. destino.inlvl .. '.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.inprmy and player:getPremiumDays() > 0 then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No esta permitido viajar a este sitio si no eres premium.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          if destino.promotion > 0 and isPromotionResult(player) < destino.promotion then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No puedes viajar a este zona, necesitas obtener un nivel de promotion mas avanzado.')
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
          end
          local toPosition = destino[2]
          if destino.ishouse then
             local house = player:getHouse()
             if not house then
                player:sendTextMessage(MESSAGE_STATUS_DEFAULT, 'No tienes casa!')
               player:getPosition():sendMagicEffect(CONST_ME_POFF)
                return true
             end
             toPosition = house:getExitPosition()
          end
          player:getPosition():sendMagicEffect(CONST_ME_POFF)
          player:teleportTo(toPosition, true)
          toPosition:sendMagicEffect(CONST_ME_TELEPORT)
      end
      end
      end
      return true
      end



    Si necesitas hospedaje para tu servidor usa este enlace y mira las buenos planes de Windows y Linux:

    SevuOT Online, Version:10 and Custom.

    Ver perfil de usuario

    elchuvas

    avatar
    Miembro
    Miembro
    Y Asi te lleva a la casa de propietario?
    o que pes

    Ver perfil de usuario

    draxloth12

    avatar
    Nuevo Miembro
    Nuevo Miembro
    cual seria el comando ?? de teleport

    Ver perfil de usuario

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