Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

@Yinz kkkkkk, doente demais. Já já tô logando no counter para tu me dá aquelas aulinhas lá, ( ͡° ͜ʖ ͡°)

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Link para o post
Compartilhar em outros sites
  • 2 months later...
Em 18/05/2019 em 21:22, lordzetros disse:

Introdução

   Estive procurando no fórum e não encontrei esse sistema de TP para versões com modal, aliás, até achei um semelhante, só que possuía algumas instabilidades e também com uma ideia de waypoints (que estava também fazendo dessa forma, mas não vem ao caso o motivo disso não ser viável no Tibia). O que trago aqui é algo mais simples, porém o necessário.
   O sistema de TP é muito importante em alguns servidores que fogem um pouco de RPG (não que seja exclusivamente para estes), ele possibilita viagens de um local para outro em instantes, como por exemplo, do Templo para o Depot ou para qualquer outra localização configurada no script (a seu gosto). Uma coisa adicional que coloquei no script, foi de listar também a house do jogador que utilizar o comando, onde você poderá configurar se será necessário pagar ou não para o mesmo ser teleportado, enfim, dê uma olhada no código depois, tá tudo comentado.

 

Informações do sistema

- Locais configuráveis

- Configurável se é necessário pagar ou não para determinado local
- Configurável a quantidade de dinheiro de cada local

- Condições ao utilizar o comando (Protect Zone e tempo para utilizar o comando novamente)

- É requisitado o jogador está possuindo a quantia necessária para o teleport

 

Instalação

 

1 - crie um arquivo chamado teleportSystem.lua em data/talkactions/scripts/ e cole o código abaixo:

  Ocultar conteúdo

 TP_MODAL_SYSTEM = {
    id = 1060, -- se nao souber do que se trata, nao mude
    titulo = "Sistema de teleport", -- titulo da janela
    mensagem = "Selecione seu destino abaixo", -- mensagem da janela
    
    tempo = 10, -- Tempo em segundos para o jogador poder utilizar o sistema novamente
    
    -- CONFIG DE HOUSES -- 
    houses_modal = true, -- se deseja exibir a house do jogador no modal de teleport, true/false
    house_pago = true, -- se o player precisa pagar para se teleportar para a house, true/false
    house_custo = 6000, -- custo do teleport para a house, caso tenha colocado true acima
    -- FIM DE CONFIG DOS HOUSES -- 
    
    protect_zone = true, -- se o player precisa ta em uma zona segura para utilizar o comando, true/false
    
    msgs = {
        ptz = "Voce precisa esta em uma protect zone para utilizar o sistema de teleport!",
        mny = "Voce nao tem %d gold coins para esta viagem!",
        exh = "Voce precisa esperar %d segundos para utilizar novamente o sistema de teleport!",
    },
    
    locais = {
        [1] = {
            nome = 'Templo', -- Nome do local a ser mostrado na janela
            pago = false, -- caso o jogador tenha que pagar para usar o teleport -> true/false
            custo = 5000, -- custo da viagem, caso tenha colocado true acima
            pos = Position(160,51,7) -- Posicao que ira se teleportar. Segue a ordem: X,Y,Z
        },
        
        [2] = {
            nome = 'Depot',
            pago = false,
            custo = 5000,
            pos = Position(121,53,7)
            
        },
        
        [3] = {
            nome = 'Ferreiro',
            pago = true,
            custo = 10000,
            pos = Position(309,677,7)
        },
        -- para adicionar mais, copie a partir do [3] até a linha de cima deste comentario, em seguida, adicione modifique para [4] e assim por diante
    },
    
    locais_wp = {}, -- não mexa
    storage = 44958, -- Storage que irá controlar o tempo para utilizar o sistema novamente
}

local function create_modal(id, title, message, tb, p)
    local wd = ModalWindow(id, title, message)
   
    for i, v in pairs(tb.locais) do
        wd:addChoice(i, v.nome .. ' | custo: ' .. ((v.pago and v.custo) or 0))
    end 
    
    local start_tp = #tb.locais
    
    if (TP_MODAL_SYSTEM.houses_modal) then 
        local p_house = p:getHouse()
        if (p_house) then 
            tb.locais_wp[p:getGuid()] = {}
            table.insert(tb.locais_wp[p:getGuid()], {
                nome = "House",
                pago = tb.house_pago,
                custo = tb.house_custo,
                pos = p_house:getExitPosition()
            })
        end 
        if (tb.locais_wp[p:getGuid()]) then 
            for i, v in pairs(tb.locais_wp[p:getGuid()]) do
                wd:addChoice(i + start_tp, v.nome .. ' | custo: ' .. ((v.pago and v.custo) or 0))
            end 
        end 
    end 
   
    wd:addButton(101, "Teleport")
    wd:addButton(100, "Cancel")
    
    wd:setDefaultEnterButton(101)
    wd:setDefaultEscapeButton(100)
    return wd  
end


local function check_cond(p)
    if (p:getStorageValue(TP_MODAL_SYSTEM.storage) >= os.time()) then 
        p:sendCancelMessage((TP_MODAL_SYSTEM.msgs.exh):format(p:getStorageValue(TP_MODAL_SYSTEM.storage) - os.time()))
        p:getPosition():sendMagicEffect(CONST_ME_POFF)
        return false
    end 
    
    if (TP_MODAL_SYSTEM.protect_zone) then 
        if not (Tile(p:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)) then 
            p:sendCancelMessage(TP_MODAL_SYSTEM.msgs.ptz)
            p:getPosition():sendMagicEffect(CONST_ME_POFF)
            return false 
        end 
    end
    return true
end 

function onSay(player, words, param)
    if not (check_cond(player)) then return false end
    player:registerEvent("Modal_tpsystem")
    local window = create_modal(TP_MODAL_SYSTEM.id, TP_MODAL_SYSTEM.titulo, TP_MODAL_SYSTEM.mensagem, TP_MODAL_SYSTEM, player)
    window:sendToPlayer(player)
    player:setStorageValue(TP_MODAL_SYSTEM.storage, os.time() + TP_MODAL_SYSTEM.tempo)
    return true
end

  

2 - Em seguida, cole este trecho de código em data/talkactions/talkactions.xml abaixo de algum semelhante:

  Ocultar conteúdo

<talkaction words="!fly" script="teleportSystem.lua" />

 


3 - Agora crie um arquivo chamado modalTpSystem.lua em data/creaturescripts/scripts/ e cole o código abaixo nele:

  Ocultar conteúdo

local function check_cond(p, t)
    local pg = t.pago
    if (pg) then 
        local ct = t.custo
        if not (p:removeMoney(ct)) then 
            p:sendCancelMessage(TP_MODAL_SYSTEM.msgs.mny:format(t.custo))
            return false
        end
    end
    p:getPosition():sendMagicEffect(CONST_ME_POFF)
    p:teleportTo(t.pos)
    p:getPosition():sendMagicEffect(CONST_ME_BATS)
end 

local function rem_pl(p)
    if (TP_MODAL_SYSTEM.locais_wp[p:getGuid()]) then
        TP_MODAL_SYSTEM.locais_wp[p:getGuid()] = nil
    end
end 

function onModalWindow(player, modalWindowId, buttonId, choiceId)
    player:unregisterEvent("Modal_tpsystem")
    if (modalWindowId == TP_MODAL_SYSTEM.id) then
        if (buttonId == 101) then 
            local tp_tgt = TP_MODAL_SYSTEM.locais[choiceId]
            if (tp_tgt) then 
                check_cond(player, tp_tgt)
            else
                local tp_tgt_w = TP_MODAL_SYSTEM.locais_wp[player:getGuid()]
                if (tp_tgt_w) then 
                    check_cond(player, TP_MODAL_SYSTEM.locais_wp[player:getGuid()][choiceId - #TP_MODAL_SYSTEM.locais])
                end
            end
        end 
        rem_pl(player)
    end
    return true
end

 

4 - E para finalizar, cole este código em data/creaturescripts/creaturescripts.xml abaixo de um semelhante:

  Ocultar conteúdo

<event type="ModalWindow" name="Modal_tpsystem" script="modalTpSystem.lua"/>

 

 

Explicação do script

A única coisa que você vai mexer é no teleportSystem, onde terá a opção de configurar os preços, locais, etc.

Configurando as houses:

Screenshot_60.thumb.png.0ce961cab4e8260260666721761db833.png

houses_modal = Se será habilitado o player teleportar para a house dele

house_pago = Se será pago o teleport para a house

house_custo = Custo do teleport para a house, caso seja pago


Configurando o local:

Screenshot_59.png.da15c7ea3f06bba814e8dbcbf0929568.png

nome = Nome do local a ser mostrado na janela

pago = Se ele vai ser pago ou não, coloque false caso queira que não cobre nada do jogador

custo = Caso tenha colocado como pago, o custo do teleport para o local

pos = Posição do local (X,Y,Z)

 

Quando for adicionar outro, copie esta mesma parte acima e altera o número [3] para [4] e os outros dados também, assim por diante.

O restante também tá explicado no script, basta ler.

 

Demonstração

UTILIZE O COMANDO !fly

Screenshot_56.png.7533af4a2240c86de8345bfdaccd33c8.png

 

Enfim, script simples, tem para outras versões, mas como falei, não tinha encontrado ainda para 1.x com esse funcionamento. Qualquer coisa, só comentar, :).

 

muito bom mano, parabéns!

Link para o post
Compartilhar em outros sites
  • 2 months later...

Boa madrugada, enfim tenho uma pequena noção em linguagem de programação Lua. e me fiz um desafio que n sei se é possível. 
estou tentando criar 1 script lua. para rodar no xenobot, mais n sei se ele reconhece os comandos necessários. quero que o script ele usasse o sistema de tp modal automaticamente.... ta sendo uma luta aksoakso. no ot ele tem o sistema de teleport que quando vc fala !go. abre uma janela modal igual do seu script, ai ele teria que selecionar um local e teleportar !!! alguem tem alguma dicas com isso? ja tentei fazer script pra auto click do mouse na coordenada mais n rolou. alguem pode me disser se é possivel isso. ou estou lutando com o impossivel? pois n tenho informação de que se o programa xenobot aceite os comandos necessarios!

tp modal.png

Link para o post
Compartilhar em outros sites

@leonardoalioti impossivel. só se voce criar um dll para fazer a ação e injetar ela no xenobot com algumas das açoes desse modal
pode usar c# ou c++ para fazer essa dll, porque o xenobot nao vai saber reconhecer esse modal, a não ser que voce fale pra ele que existe tal coisa.

Xenobot é limitado em açoes apenas as açoes que ele faz na source podem ser usadas nos códigos em lua, por isso voce precisa injetar uma dll com as açoes que voce quer relizar no caso ler o modal e escolher qual cidade ir.

Link para o post
Compartilhar em outros sites
  • 3 months later...

bom dia, eu coloquei o system no meu server mais ta me da dando um error

Click Para Olhar Imagem

adicione tudo como vc tem alhi no post

Editado por Dragonnixe (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Underewar
      https://www.eternalglobal.online/
      Server Features
      Protocol 8.60 and 12.30 Features (working 100%) Bestiary -> Janela  Em Contrução para Client 8.60 ja funcional no servidor. Charm -> Janela Em Contrução para Client 8.60 ja funcional no servidor. Store -> Janela  Em construção para CLIENT 8.60 Quickloot -> Janela  Em Contrução para Client 8.60 ja funcional no servidor. Cast system Wrap system  Custom spawns loading syste WarSystem RaidSystem Offline Trainers Sala de Trainers Stamina Refil Itens Donate Boosted Boss Boosted Creature 5 Eventos Automaticos.
      12x Updates

      NEW ITEMS
      Umbral Items ,Cobra Items,Falcon Items,Warzone Items,Gnome Item

       
      NEW AREAS

      Issavi


       
      Roshamuul

      Oramond

      Cobras

       
       
      Falcons



       
      Warzone 1,2,3


      Warzones 4,5,6


       
       

       

       
       
       
       
       
       
    • Por Dnzk21
      OLA COMUNIDADE SE ALGUEM PUDER ME AJUDAR FICAREI MUITO GRATO!
      PRECISO DE UMA SCRIPT PRA UMA  ARENA,  É UM QUADRADO!
      PLAYER ENTRA NELA E AO MORRER ELE NAO PERDE NADA VOLTA PRO TEMPLO!
      DESDE JA OBRIGADO PELA ATENÇAO
    • Por luanluciano93
      Olá, esse tutorial é uma parte do tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... 
       
      Aqui ensinaremos como compilar o código fonte do TFS na máquina LINUX e posterior configurar o servidor.
       
      PASSO 1 - COMPILANDO TFS NO UBUNTU
       
      Primeiramente, devemos instalar os softwares necessários. O comando a seguir instalará o CMake, um compilador e as bibliotecas usadas pelo TFS. Após usar o comando digite Y para aceitar a instalação.
      sudo apt install cmake build-essential libluajit-5.1-dev libmysqlclient-dev libboost-system-dev libboost-iostreams-dev libboost-filesystem-dev libpugixml-dev libcrypto++-dev libfmt-dev libboost-date-time-dev  
      Caso ainda não tenha criado a pasta do servidor (como foi dito no tutorial de instalação do PHP), use o comando a seguir para criar a pasta:
      sudo mkdir /home/otserv  
      E depois vá até a pasta usando o comando: 
      cd /home/otserv  
      Agora, usando o WinSCP vá até a pasta /home/otserv/ e jogue a pasta de seu servidor ai dentro ... 
       
      Antes deve estar assim: (se você seguiu o tutorial de instalação do PHP)
         
       
      Depois, os arquivos transferidos devem ser esses!

       
      Caso você não tenha os arquivos necessários, use:
      - TFS atual: https://github.com/otland/forgottenserver
      - TFS Nekiro's 8.60 Downgrade: https://github.com/nekiro/TFS-1.5-Downgrades/tree/8.60
       
      Após transferido os arquivos, use o comando abaixo para criar a pasta BUILD e entrar nela: 
      mkdir build && cd build E depois, use o comando do compilador: 
      cmake ..  
      Agora use o comando para compilar o código fonte do TFS:
      make  
      E pronto, o código fonte foi compilado e gerou um arquivo "tfs", agora use o comando a seguir para mover o TFS para a pasta do servidor e voltar para a pasta anterior.
      mv tfs .. && cd .. Ficando assim na pasta "otserv": 

       
      PASSO 2 - IMPORTANDO DATABASE E AJUSTANDO CONEXÃO PELO CONFIG.LUA
       
      Entre em seu phpmyadmin pelo navegador (IP/phpmyadmin, ou o outro destino que você escolheu conforme o tópico de instalação do phpmyadmin) 

      Depois clique em "novo" para criar um novo banco de dados:
       
       
      E depois de digitar o nome do novo banco de dados, clique em "criar": 

       
      Agora clique em "IMPORTAR" e depois em "escolher arquivo":

      E então selecione o arquivo padrão de database. Se você não tiver um arquivo padrão, use a do TFS: https://raw.githubusercontent.com/otland/forgottenserver/master/schema.sql
       
      E por fim, clique em EXECUTAR.

       
       
      No arquivo config.lua.dist você deve ajustar o dados para a conexão com o banco de dados: 
       
      -- MySQL mysqlHost = "127.0.0.1" mysqlUser = "forgottenserver" mysqlPass = "" mysqlDatabase = "forgottenserver" mysqlPort = 3306 mysqlSock = ""  
      (você pode incluir o caminho do mysqlSock para mysqlSock = "/var/run/mysqld/mysqld.sock"
       
      PASSO 3 - LIGANDO SEU SERVIDOR TFS NO UBUNTU E CRIANDO ARQUIVO AUTO RESTART
       
      Para prosseguirmos será necessária a instalação do SCREEN em sua máquina, veja o tutorial que explica o que ele é, para que server e ensina instala-lo: AQUI.
       
      Após a instalação, vamos criar um SCREEN para rodar o servidor chamada TFS ... 
      screen -S TFS  
      E após, usando o WinSCP, vá até a pasta do seu servidor em /home/otserv/ e crie um arquivo chamado "restart.sh" e coloque isso dentro dele:
      #!/bin/bash # to get 'ts' command: sudo apt install moreutils # to get 'crc32' command: sudo apt install libarchive-zip-perl BINARY_NAME=tfs MYSQL_USER=xxxx MYSQL_PASS=yyyy MYSQL_DATABASE=zzzz mkdir console mkdir crashlog mkdir mysql_backup # Permitir despejos de nucleo ulimit -c unlimited # Laco principal while true; do     # Backup do banco de dados, e o melhor momento para fazer a copia do banco de dados, o OTS esta offline com certeza, entao nao pode haver nenhum clone de item.     mysqldump -u $MYSQL_USER -p$MYSQL_PASS $MYSQL_DATABASE > mysql_backup/`date '+%Y-%m-%d_%H-%M'`.sql     # Compactar em gzip com mais de 3 dias.     find console/ -name "*.log" -mtime +3 -print -exec gzip -f {} \;     find crashlog/ -name "*.bin" -mtime +3  -print -exec gzip -f {} \;     find crashlog/ -name "*.core" -mtime +3  -print -exec gzip -f {} \;     find mysql_backup/ -name "*.sql" -mtime +3  -print -exec gzip -f {} \;     BINARY_WITH_HASH=`date '+%Y-%m-%d_%H-%M'`_`crc32 $BINARY_NAME`     # copie o arquivo binário atual, você precisa do binário desde o momento da falha para executá-lo no gdb.     cp $BINARY_NAME crashlog/$BINARY_WITH_HASH.bin     # iniciar servidor     # se o seu servidor já imprime a data com cada linha no console, você pode remover "| ts '%Y-%m-%d_%H-%M-%.S'"     stdbuf -o 0 ./$BINARY_NAME 2>&1 | ts '%Y-%m-%d_%H-%M-%.S' | tee 'console.log'     cat 'console.log' >> 'console/console_'`date '+%Y-%m-%d'`'.log';     mv core crashlog/$BINARY_WITH_HASH.core     echo INICIAR A ESPERA POR 3 SEGUNDOS, PRESSIONE CTRL+C PARA DESLIGAR O RESTARTER     sleep 3     echo FIM DA ESPERA done  
      Em seguida, dar permissão ao arquivo "restart,sh" com o comando: 
      sudo chmod 777 -R restart.sh  
      Logo, instale os programas necessários para o restart funcionar corretamente:
      sudo apt install moreutils sudo apt install libarchive-zip-perl Posterior, configure o restart.sh com os dados corretos para a conexão SQL: troque onde esta xxxx, zzzz, yyyy

      Para o restarter criar o arquivo core é necessário desativar o serviço apport no sistema com o comando:
      sudo systemctl stop apport.service sudo systemctl disable apport.service Depois de desativar, use o comando a seguir para ver se está ativo o core, você terá que ter como resposta: core
      cat /proc/sys/kernel/core_pattern  
      E por fim, iniciar o uso do arquivo "restart.sh" com o comando:
      ./restart.sh  
      A princípio é isso!
       
      Siga as atualizações no tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... 
       
       
      Fontes: 
      - https://github.com/otland/forgottenserver/wiki/Compiling-on-Ubuntu
       
       
       
       
       
    • Por amoxicilina
      Olá Kings, venho aqui trazer uma TalkAction pra você comprar premium account, sei que pode ser algo meio inútil por existir a store.
      Então vamos script:
       
       
    • Por Rodrigo Querobim
      Olá gostaria de um script para quando o player usa-se comando !reward ele poderia selecionar qual varinha de treinamento ele queria e apenas 1 por player.

      OBS: Consegui esse script mas não está do jeito que estou tentando fazer, e o script esta dando varinha infinitamente toda vez que usa o comando "!wand".
       
      local dailyWand = TalkAction("!wand")   function dailyWand.onSay(player, words, param)     local storage = 556655001     local getStor, osTime = player:getStorageValue(storage), os.time()     if ((osTime <= getStor) or (getStor == -1)) then         player:addItem(28557, 500)         player:setStorageValue(storage, osTime + (60 * 60 * 24))     else         player:sendCancel("You can only use this command once every 24 hours.")     end       return false end   dailyWand:register()
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo