-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por FeeTads
SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.
**script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts
vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.
SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.
vá em creatureevent.cpp
procure por:
else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
Adiciona abaixo:
else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;
procure por:
case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";
Adicione abaixo:
case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";
procure por:
case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
Adicione abaixo:
case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";
agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }
agora vá em creatureevent.h
procure por:
CREATURE_EVENT_PREPAREDEATH
adicione abaixo:
CREATURE_EVENT_NOCOUNTFRAG
procure por:
uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
Adicione abaixo:
uint32_t executeNoCountFragArea(Creature* creature, Creature* target);
agora vá em player.cpp
procure por:
bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
abaixo de:
War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
Adicione o seguinte código:
if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }
//
Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor
vá até creaturescripts/scripts
crie um arquivo chamado, "noCountFragInArea.lua"
e dentro dele cole o código:
--[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
agora em creaturescripts.xml
<event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
agora em creaturescripts/scripts/login.lua
procure por OU semelhante a esse:
registerCreatureEvent(cid, "AdvanceSave")
e abaixo adicione:
registerCreatureEvent(cid, "fragarea")
//
Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script
Exemplo:
local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.
Façam bom proveito dos scripts, e deixem os créditos no script rsrs
**Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
-
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 Glacial
Boa noite galera!
Meu nome é Gustavo/Glacial, gostaria de compartilhar meu mapa projeto Old City (8.60)
Espero que curtam e podem baixar pra colocar no ot de vocês!
Atualização Old City (8.60) versão 1.0:
- Depot + Templo + Lojas (NPCs a gosto) + Teleports (para customizar) tudo em uma mesma casa central.
- Houses em volta da cidade.
- 4 saídas N, S, L e Oeste.
- Cidade estilizada com bancos, postes de luz, e bancos.
Atualização Old City (8.60) versão 2.0:
- 4 Novos Mapas de Hunt/Quest ao Norte (Montanhas) Sul (Jungle) Leste (Vulcão) e Oeste (Gelo) da Old City.
>>> Download Mapas: https://www.mediafire.com/folder/hz0q694t9nk86/Mapas_Glacial <<<
Scan VirusTotal:
Old City (8.60) versão 1.0 Virus Total: https://www.virustotal.com/gui/file/5c2988531c71e1ae7f363b1102c865cb9debe2fd7e5f1b09b7cd09d40c2bf517?nocache=1
Old City (8.60) versão 2.0 Virus Total: https://www.virustotal.com/gui/file/a2caef91a130d0df62ae4e88fa0719c331a6bb1fbad66a72c08fc3cd362bf430?nocache=1
- Mapas Anteriores:
Glacial City (10.98) versão 1.0 Virus Total: https://www.virustotal.com/gui/file/b4e94903752e24aba63b291f9929f15f6bd7f4feb44d5a1f42ec3d755ee7977e?nocache=1
Glacial City (10.98) versão 2.0 Virus Total: https://www.virustotal.com/gui/file/d88ae087e966bed6e2f2348f31246c1858831c1fb13d4e8613ba98f6ede37503?nocache=1
-
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 SHARINGAN.exe
Procurei na net um tutorial desse tipo e não achei, então ta ae, da forma mais básica possível.
-
Posts Recomendados
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.