• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Talkactions] TELEPORT HOUSE (MODAL WINDOWS) ( TFS 1.3)

    Compartir:

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

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Hola usuarios de Tibiaface



    Bueno aqui les traigo un teleport via modal windows el cual tiene varios destinos como el tan buscado teleport house el cual te lleva hasta la puerta de su casa claro esta que todos los destinos son verificados si estan con batle o tiene casa o si tiene el dinero suficiente para viajar bueno cone sta explicacion breve le dejo una imagen y la instalacion.

    [Talkactions] TELEPORT HOUSE (MODAL WINDOWS) ( TFS 1.3) Captur31


    data\creaturescripts\scripts

    copian cualquier archivo y renombran por window teleport.lua y pegan esto dentro

    Código:


           
           
            function onModalWindow(player, modalWindowId, buttonId, choiceId)
      if modalWindowId == 1001 then
          if buttonId == 1 or buttonId == 29 or buttonId == 0 then
            local pos = 0
            if (choiceId == 1) then
           
            ----------inicio primera choise
           
            if player:getMoney() <= 200 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, "No tienes dinero!")
                player:sendCancelMessage('Tu no tienes dinero!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
              if player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) then
                player:sendTextMessage(MESSAGE_STATUS_WARNING, "No Puedes teleportarte noobato!")
                player:sendCancelMessage('Tu estas en batalla!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
              local house = player:getHouse()
      if not house then
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'You do not have a house.')
            return true
        end
              player:removeMoney(200)
                pos = player:getHouse():getExitPosition()
               
                ------------fin primera choise
               
            elseif (choiceId == 2) then
           
            if player:getMoney() <= 200 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, "No tienes dinero!")
                player:sendCancelMessage('Tu no tienes dinero!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
              if player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) then
                player:sendTextMessage(MESSAGE_STATUS_WARNING, "No Puedes teleportarte noobato!")
                player:sendCancelMessage('Tu estas en batalla!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
     
              player:removeMoney(200)
           
                pos = {x=144, y=400, z=7}
            elseif (choiceId == 3) then
           
            if player:getMoney() <= 200 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, "No tienes dinero!")
                player:sendCancelMessage('Tu no tienes dinero!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
              if player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) then
                player:sendTextMessage(MESSAGE_STATUS_WARNING, "No Puedes teleportarte noobato!")
                player:sendCancelMessage('Tu estas en batalla!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
     
              player:removeMoney(200)
           
                pos = {x=117, y=45, z=15}
            elseif (choiceId == 4) then
           
            if player:getMoney() <= 200 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, "No tienes dinero!")
                player:sendCancelMessage('Tu no tienes dinero!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
              if player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) then
                player:sendTextMessage(MESSAGE_STATUS_WARNING, "No Puedes teleportarte noobato!")
                player:sendCancelMessage('Tu estas en batalla!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
     
              player:removeMoney(200)
           
                pos = {x=98, y=55, z=15}
            elseif (choiceId == 5) then
           
            if player:getMoney() <= 200 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, "No tienes dinero!")
                player:sendCancelMessage('Tu no tienes dinero!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
              if player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) then
                player:sendTextMessage(MESSAGE_STATUS_WARNING, "No Puedes teleportarte noobato!")
                player:sendCancelMessage('Tu estas en batalla!')
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
        end 
           
     
              player:removeMoney(200)
           
                pos = {x=117, y=55, z=15}
            end
            player:teleportTo(pos, false)
          end
      end
      return true
    end

    ahora se van a

    data\creaturescripts\creaturescripts.xml

    y agregan esta tag

    Código:
    <event type="modalwindow" name="WindowTeleports" script="window teleport.lua"/>

    Seguimos ahora nos vamos a

    data\talkactions\scripts

    copian cualquier archivo y renombran por teleport_modal.lua y pegan esto dentro

    Código:



    local modaldialog = {
      title = "Teleport Vip",
      message = "To which room you want to go?",
      buttons = {
          { id = 1, text = "go" },
          { id = 2, text = "Cancel" }
      },
      buttonEnter = 1,
      buttonEscape = 2,
      choices = {
          { id = 1, text = "house [200 gp]" },
          { id = 2, text = "carlin [200 gp]" },
          { id = 3, text = "venore [200 gp]" },
          { id = 4, text = "edron [200 gp]" },
          { id = 5, text = "yalahar [200 gp]" }
      },
      popup = true
    }



            function onSay(player, words, param)

          modalWindow = ModalWindow(1001, modaldialog.title, modaldialog.message)
      if modalWindow:getId() == 1001 then
          for _, v in ipairs(modaldialog.buttons) do
                  modalWindow:addButton(v.id, v.text)
          end
          for _, v in ipairs(modaldialog.choices) do
                    modalWindow:addChoice(v.id, v.text)
                   
          end
          modalWindow:setDefaultEnterButton(modaldialog.buttonEnter)
          modalWindow:setPriority(modaldialog.popup)
          modalWindow:setDefaultEscapeButton(modaldialog.buttonEscape)
      end
      modalWindow:sendToPlayer(player)
      player:registerEvent("WindowTeleports")

            return true
            end

    ahora se van a:

    data\talkactions\talkactions.xml

    y agregan esta tag

    Código:
    <talkaction words="!teleport" script="teleport_modal.lua" />


    creditos: 100% god maya



    [Talkactions] TELEPORT HOUSE (MODAL WINDOWS) ( TFS 1.3) YNU5B25
    https://www.tibiaface.com

    dazel169

    dazel169
    Miembro
    Miembro
    excelente maya, muchas gracias. Disculpa Maya, para agregarle que baje exhaustion para evitar que lo usen seguido, o que cada cierto tiempo lo puedan utilizar por ejemplo cada 20 segundos, que linea se le agrega =)?

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:excelente maya, muchas gracias. Disculpa Maya, para agregarle que baje exhaustion para evitar que lo usen seguido, o que cada cierto tiempo lo puedan utilizar por ejemplo cada 20 segundos, que linea se le agrega =)?


    esto se le agrega


    Código:


    local delaySayCommand = 20
    local delaySayStorage = 77000    ------- verificar si no esta ocupado en tu ot este storage

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



    [Talkactions] TELEPORT HOUSE (MODAL WINDOWS) ( TFS 1.3) YNU5B25
    https://www.tibiaface.com

    dazel169

    dazel169
    Miembro
    Miembro
    Excelente maya, llegando lo pruebo.
    Por cierto, no me aparecio este mensaje
    Código:
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'You do not have a house.')
            return true

    Le tube que agregar debajo
    Código:
    player:sendCancelMessage('Nl tienes casa!')

    Por si a alguien le pasa lo mismo 😅



    Hola, para las personas que quieran que tenga delay su comando, modificar el talkaction publicado por este...

    Creditos a: GOD MAYA

    Código:
    local modaldialog = {
       title = "Teleport",
       message = "Selecciona tu destino!",
       buttons = {
          { id = 1, text = "Ir" },
          { id = 2, text = "Cancelar" }
       },
       buttonEnter = 1,
       buttonEscape = 2,
       choices = {
          { id = 1, text = "Casa [200 gp]" },
          { id = 2, text = "Templo [200 gp]" },
          { id = 3, text = "venore [200 gp]" },
          { id = 4, text = "edron [200 gp]" },
          { id = 5, text = "yalahar [200 gp]" }
       },
       popup = true
    }

    local tiempo = 10  ------> significa 10 segundos

    function Player.setExhaustion(self, value, time)
        self:setStorageValue(value, time + os.time())
    end

    function Player.getExhaustion(self, value)
        local storage = self:getStorageValue(value)
        if not storage or storage <= os.time() then
            return 0
        end

        return storage - os.time()
    end

    function Player:hasExhaustion(value)
        return self:getExhaustion(value) >= os.time() and true or false
    end

            function onSay(player, words, param)

     if player:getExhaustion(1000) > 0 then
      player:sendCancelMessage('You\'re exhausted for: '..player:getExhaustion(1000)..' seconds.')
      return false
    end
          modalWindow = ModalWindow(1001, modaldialog.title, modaldialog.message)
       if modalWindow:getId() == 1001 then
          for _, v in ipairs(modaldialog.buttons) do
                  modalWindow:addButton(v.id, v.text)
          end
          for _, v in ipairs(modaldialog.choices) do
                    modalWindow:addChoice(v.id, v.text)
                    
          end
          modalWindow:setDefaultEnterButton(modaldialog.buttonEnter)
          modalWindow:setPriority(modaldialog.popup)
          modalWindow:setDefaultEscapeButton(modaldialog.buttonEscape)
       end
       modalWindow:sendToPlayer(player)
       player:registerEvent("WindowTeleports")
       player:setExhaustion(1000, tiempo)

            return true
            end

    hielakorn

    hielakorn
    Miembro
    Miembro
    Buenas una pregunta como hago que en ves de que digan !teleport lo utilicen en un objeto que tenga cierta cantidad de usos??



    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Buenas una pregunta como hago que en ves de que digan !teleport lo utilicen en un objeto que tenga cierta cantidad de usos??


    Yo me respondo se pone en action el mismo scripts de teleport_modal.lua. donde dicer function onSay(player, words, param) la cambias por function onUse(player) y en action.xml por algo asi <action itemid="xxxx" script="teleport_modal.lua"/> dodne esta las X pones el ID del item que quieres que use al darle click derecho

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