Histórico de Edições
Please note that revisions older than 15 days are pruned and will no longer show here
Não há histórico de edição para mostrar, ou este comentário foi editado por um moderador.
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
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 Underewar
Olá gostaria de contribuir com a comunidade com estes serviços.
Aproveite é por tempo limitado.
Conheça um pouco mais sobre quem eu sou.
Serviços de Desenvolvimento Web
Excelência em Resolução de Problemas
Identificação e correção de BUGS em bancos de dados e scripts PHP para um funcionamento perfeito. Criação de Valor
Implementação de novas funcionalidades em websites, tanto no Front-end quanto no Back-end, para melhorar a experiência dos usuários. Design Atraente
Habilidade em design responsivo usando Bootstrap para criar interfaces atraentes e compatíveis com diversos dispositivos. Da Ideia à Realidade
Capacidade de criar websites avançados desde o conceito inicial até a implementação completa, integrando funcionalidades complexas. Personalização Precisa
Desenvolvimento de websites a partir do zero usando stacks avançadas ou PHP convencional, garantindo personalização total. Desenvolvimento de Open Tibia Server (OTC)
Melhoria Contínua
Identificação e solução de BUGS em módulos para aprimorar a estabilidade e jogabilidade no Open Tibia Server. Inovação Impulsionada
Integração de novas funcionalidades ao OTC, enriquecendo a experiência dos jogadores com recursos inovadores. Módulos Eficientes
Criação de novos módulos com foco na qualidade do código e na melhoria da interatividade dos jogadores. Desenvolvimento de Otserver (Open Tibia Server)
Performance Elevada
Identificação e correção precisa de problemas em scripts para manter a performance e a integridade do otserver. Crescimento Constante
Introdução de novos scripts e funcionalidades, impulsionando o crescimento contínuo e a inovação do otserver. Atualização Estratégica
Atualização cuidadosa dos pacotes de compilação de projetos para garantir eficiência e compatibilidade. Otimização e Segurança
Proteção Robusta
Implementação de soluções AntiCheat/AntiBot para garantir um ambiente de jogo seguro e livre de trapaças. Escalabilidade e Desempenho
Configuração especializada em nuvens líderes do mercado, incluindo Google Cloud, Azure Cloud, Amazon Cloud e DigitalOcean Cloud. Defesa Efetiva
Instalação e configuração do ANTI-DDOS Cloudflare para proteger o servidor contra ataques cibernéticos. Outros Serviços
Inovação na Blockchain
Implementação de sistema NFT, incorporando aspectos visuais e lógicos da tecnologia blockchain para criar experiências únicas. Facilitação Financeira
Integração de pagamento automático em websites, abrangendo uma variedade de plataformas para maior comodidade dos usuários. Infraestrutura Otimizada
Configuração e instalação nas nuvens, como Google Cloud, Azure Cloud, Amazon Cloud e DigitalOcean Cloud, para alcançar a melhor performance.
Processo de Contratação Simplificado:
Aqui está a nossa forma descomplicada de lidar com pagamentos:
Entrada (50%): Depois de escolher o serviço, pedimos metade do valor para começar.
Saldo (50%): Quando terminarmos e você estiver satisfeito, pedimos o restante antes da entrega final.
Estamos ansiosos para trabalhar juntos. Se tiver dúvidas ou estiver interessado em nossos serviços, sinta-se à vontade para entrar em contato. Mal podemos esperar para construir algo incrível juntos!
Converse Comigo:
Estou à disposição para conversar e discutir projetos.
Fique à vontade para me contatar aqui ou através das seguintes redes:
LinkedIn: Rafhael Oliveira
Meus Projetos: Dê uma olhada nos meus projetos no GitHub: GitHub Repositories
Otland: Confira meu perfil no Otland e veja minhas conquistas: Perfil no Otland
Com uma experiência sólida de 10 anos na área de desenvolvimento de OTS,
-
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() -
Por najatheus
Sistema funciona da seguinte forma, ao digitar : !aura on, a aura do player vai ligar, enquanto ela estiver ligada o player vai ficar regenerando a vida dele, ao digitar : !aura off, ela vai desligar e o player vai parar de regenerar a vida dele, vou estar deixando um video aqui em baixo
Agora vamos colocar o codigo
Em data/talkactions/script/, crie um arquivo chamado aura.lua, e coloque isso dentro dele :
local config_aurea = { effect = 4; -- efeito que vai ficar girando no player effect_health = 162; -- efeito qnd curar o player level_use = { -- level que vai ser usado (min/max) min = 1, max = 600, } ; health = 10; -- tanto que vai curar por time configurado pos_aurea = { -- não mexa [1] = {x = 0, y = -1}; [2] = {x = 1, y = -1}; [3] = {x = 1, y = 0}; [4] = {x = 1, y = 1}; [5] = {x = 0, y = 1}; [6] = {x = -1, y = 1}; [7] = {x = -1, y = 0}; [8] = {x = -1, y = -1}; }; storage_pos = 1547637649; -- não mexa e nem repita esse valor em outro script!! storage = 165477963; -- não mexa e nem repita esse valor em outro script!! tempo_aurea = 100; -- tempo da aurea para passar em cada posição } local function calculePosAurea(player_uid) local player = Player(player_uid) if(not(player))then return(nil) end if(player:getStorageValue(config_aurea.storage) <= 0)then return(nil) end if(player:getStorageValue(config_aurea.storage_pos) >= 8)then player:setStorageValue(config_aurea.storage_pos, 0) end player:setStorageValue(config_aurea.storage_pos, player:getStorageValue(config_aurea.storage_pos) + 1) return(player:getStorageValue(config_aurea.storage_pos)) end local function posAurea(player_uid) local player = Player(player_uid) if(not(player))then return(nil) end if(player:getStorageValue(config_aurea.storage) <= 0)then return(nil) end local pos_x = player:getPosition().x local pos_y = player:getPosition().y local pos_z = player:getPosition().z local aa = calculePosAurea(player_uid) local pos = Position(pos_x + config_aurea.pos_aurea[aa].x, pos_y + config_aurea.pos_aurea[aa].y, pos_z) if(not(pos))then return(nil) end return(pos) end local function aurea(player_uid) local player = Player(player_uid) if(not(player))then return(nil) end if(player:getStorageValue(config_aurea.storage) <= 0)then return(nil) end player:addHealth(config_aurea.health) player:getPosition():sendMagicEffect(config_aurea.effect_health) local position = posAurea(player_uid) position:sendMagicEffect(config_aurea.effect) addEvent(aurea, config_aurea.tempo_aurea, player_uid) end function onSay(player, words, param) if(words == "!aura on")then if(player:getLevel() > config_aurea.level_use.max)then return(not(player:sendTextMessage(MESSAGE_STATUS_SMALL, player:getName() .. " seu level(" .. player:getLevel() .. ") precisa ser maior(" .. config_aurea.level_use.max))) end if(player:getLevel() < config_aurea.level_use.min)then return(not(player:sendTextMessage(MESSAGE_STATUS_SMALL, player:getName() .. " seu level(" .. player:getLevel() .. ") precisa ser menor(" .. config_aurea.level_use.max))) end if(player:getStorageValue(config_aurea.storage) >= 1)then return(not(player:sendTextMessage(MESSAGE_STATUS_SMALL, player:getName() .. " Você ja esta com a aurea ligada"))) end player:setStorageValue(config_aurea.storage, 1) player:setStorageValue(config_aurea.storage_pos, 0) aurea(player.uid) elseif(words == "!aura off")then player:setStorageValue(config_aurea.storage, 0) end return(false) end
Agora em data/talkactions/talkactions.xml, abra ele e coloque :
<talkaction words="!aura on;!aura off" script="aura.lua"/>
Agora em data/creaturescript/script/login.lua, abra ele e embaixo de :
player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
Coloque :
player:setStorageValue(165477963, 0) player:setStorageValue(1547637649, 0)
Creditos : Sr. Naja
20210927_210547.mp4
-