Histórico de Curtidas
-
Mateus Robeerto deu reputação a ZORAN em [Tutorial] Compilando TFS v1.0 com MSVC 2013Olá amigos da Comunidade Tibiaking venho trazer a vocês este tutorial de como compilar o TFS v1.0 em windows 32 or 64 bits com Microsoft Visual Studio 2013 (Obs: Eu uso a 2013 Ultimater Recomendo). Vamos ao tutorial >> 1) Primeito baixe os programas abaixo se não tiver claro: MSVS 2013 >> Click Here http://www.visualstudio.com/downloads/download-visual-studio-vs Agora baixar os Programas do TFS v1.0: TFS Sdk >> Click Here - Link 2: (Mirror)
Source Do TFS v1.0 >> Click Here
Atenção Baixe apenas a Boost da versão do Pc 32 or 64 Bits. Boost MSVS 2013 32Bits >> Click Here
Boost MSVS 2013 64Bits >> Click Here
2) Agora vamos começar a instalar os Programs do TFS v1.0 >> Primeiro instale o Boost 32 or 64Bits No diretorio raiz do seu HD: Print >>
Agora coloque o SDK Extraido na raiz do Seu HD: Print >> Faça a mesma coisa com a source do TFS v1.0: Print>> Depois de ter feito tudo isso abra a pasta da source e abra a pasta vc12 e siga a print: ( Obs: Você vera Boost32 isso acontece porque na instalação eu coloquei no diretório como Boost32 (Primeira foto) mas basta você deixar como C:\Boost ( A letra C:\ Refere-se a letrado do seu HD ela pode ser D - H - F e Etc... Varia de Pc a Pc.) ) Print >> Com o Visual Studio (2013 Recomendado) aberto Siga as Prints abaixo: Click com botão direito no projeto e vá em propriedades: Print >> Depois Click em Cofiguration manager: Print >> Vamos as explicações: 1 >> Click la Primeiro Quando abrir a caixa com os passos 2-3 and 4 siga-os abaixo >> 2>> Coloque release e só nada mais. 3>> escolha para qual sistema de 32 or 64Bits. (Lembrado que ali e de acordo com a Boost oks. ) 4>> Só Click lá quando terminar de fazer os passos acima. Rsrs.] ------------------------------------|||||------------------------------- 3) Terceira parte Passos 1 do tutorial vamos lá >> Primeiro agora depois de fazer os passos anteriores faça os seguintes passos Click em C/C++ >>> General e siga a Print: Print>> Caso você não entendeu siga as explicações: Vamos as explicações: 1>> Onde você Deve clicar C/C++ >> General. 2>> Click onde a seta esta apontado e click em edit ou de dois clicks. 3>> Quando abrir a caixa de dialogo deixe os diretórios iguais ao da foto e de um Ok. ( Obs: Você vera Boost32 isso acontece porque na instalação eu coloquei no diretório como Boost32 (Primeira foto) mas basta você deixar como C:\Boost ) Terceira parte passo 2 Click em Linker >> General e siga as Prints >> Prints >> Vamos as explicações: 1>> Onde você deve Clicar depois de fazer os passos anteriores da terceira parte passos 1. Oks. 2>> igual ao passo 2 da parte 1 da terceira parte só que mais explicativo. 3>> Click em Edit e espere abrir a caixa de Dialogo siga a Print 2. Print 2>> Deixe igual a caixa de dialogo onde esta marcado com o 1 Grande Oks. Depois basta da um OK e um Apply e Ok e esperar aparecer Ready >>
Print>> Explicações: 1>> Esperar o Ready. 2>> Click com o botão direito no projeto e depois em BuilD. Basta Esperar terminar a compilação e Pronto. Caso o tutorial não tenha sido bem explicativo Posso melhorá-lo a sugestão e depois posto a foto final da compilação Oks. Se quiser me agradecer eu serei grato pois deu trabalho fazer esse tutorial pois bugo algumas vezes. Um grande abraço e fiquem com Deus! Nota: Eu Tenho permissão do autor do tutorial Original em Inglês para criar o post em PT-Br Não e permitido copiar ou reproduzir sem a devida autorização de Dominique120. Não e permitido postar o Faq do mesmo aqui neste tutorial para ver mais informações siga o LINK ou Veja os #créditos. #Creditos: -------------------///------------------ Dominique120 >> Click aqui para ver o tutorial original -------------------///-------------------- ZORAN >> Click aqui para ver o meu perfil -
Mateus Robeerto deu reputação a Johncore em [TFS 1.3] Otg Server - 11x / Otcv8 / Otc Menah / 12.40 (BASE CLEAN)Olá galera, esse topico agora será destinado para o Otg Server, se trata de uma base limpa, sem global map / scripts, totalmente clean/limpa para o publico que deseja uma base boa para fazer algo proprio custom e ter features importantes como Prey, Imbuements, Store in game, Reward Daily e diversas otimizações. projeto aberto no github para todos colaborarem. Estamos adicionando em uma branch separada features para Otcv8 / Menah, no qual você contará com wings, aura e shaders.
Segue uma imagem do que você encontrará aqui:
Agradecer ao @Mateus Robeerto pela ajuda que está dando, trazendo grandes contribuições para todos repositorios da Otg Server.
-
Mateus Robeerto deu reputação a Under em [TFS 1.3] Otg Server Global - 12.85 (Updates Diarios)@Johncore Anima dar uma atualizada nessa bagaça ?
-
Mateus Robeerto deu reputação a Under em Pedido - Pequeno tutorial de como editar o servidor (Canary 13x)Antes de mais nada, você precisa saber que o revscriptsys é compatível apenas com:
TFS 1.3+. Canary. OTX 5, que foi criado usando como base o TFS 1.3 e OTG-Global.
O revscriptsys é uma nova forma de registrar scripts para que você não precise fazer isso via XML (apenas em Lua). Você só precisa colocar seus scripts Lua dentro de "data/scripts/" ou em qualquer subpasta dele, se desejar. Os scripts de monstro são colocados em um caminho diferente: data/monster também sendo possível colocar em qualquer subpasta e organizar como você bem entender.
Este sistema suporta o uso de diferentes metatables no mesmo script (Actions, MoveEvents, GlobalEvents... Etc). Isso é muito útil se você fizer missões prolongadas (por exemplo), não necessitando criar arquivos separados para cada metatable. O script deve conter um cabeçalho e rodapé, confirme mostrado no exemplo a seguir.
-- Este é o nosso cabeçalho, é a primeira coisa que deve ser colocada, com exceção das variáveis de configuração local testAction = Action() -- Aqui, nós registramos a action na função onUse, se você esquecer de declarar a variável testAction aqui, o script não funcionará function testAction.onUse(player, item, fromPosition, target, toPosition, isHotkey) return print("We used this item: " .. item.itemid ..".) end -- Aqui você registra o id do item testAction:id(2550) -- Este é o rodapé, deve sempre ser a última função registrada testAction:register() -- Movement local testMovement = MoveEvent() function testMovement.onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end print(player:getName(), item:getId(), item:getName()) return true end testMovement:id(426) testMovement:register()
No exemplo acima, temos uma Action e um MoveEvent dentro do mesmo script, lembra da introdução?
O revscriptsys suporta o uso de diferentes metatables no mesmo script.
O "testAction" é uma variável (local), o que significa que você pode mudar ele para qualquer outro nome do seu gosto, por exemplo:
local scythe = Action() Fazendo isso, você também precisa modificar a variável que fica na linha do function, ficando assim:
function scythe.onUse(player, item, fromPosition, target, toPosition, isHotkey) Também precisa modificar a variável do "id", ficando assim:
scythe:id(2550) E a do register, ficando assim:
scythe:register() Conclusão agora não é necessário mais registrar via xml você tem as tags de registro com base no nome da função no próprio script lua
ilocal scythe = Action() NOME DA FUNÇÂO + Modulo action nesse caso.
function scythe.onUse(player, item, fromPosition, target, toPosition, isHotkey) Função scythe declarada com modulo Action sendo usado na função onUse.
scythe:id(2550) Registro do ITEMID
scythe:register() Registro Do EVENTO
Então repare que agora nos scripts sempre no inicio você vai ter o nome da função que esta sendo declarada junto do modulo e no final os tipos de registros atrelado a função.
-
Mateus Robeerto deu reputação a Under em [OTClient Showoff] Mostre seu Projeto/Módulo/Interface do seu OTClientAqui ja deu uma melhorada kkkkk
-
Mateus Robeerto recebeu reputação de idlerpl em [BOOSTED CREATURE] Vamos melhorar esse código ? TFS 1xUsing onStatsChange in TFS 1.x? That's completely incorrect — the proper way is to use onHealthChange and onManaChange.
However, there is an alternative that doesn't require using two separate functions. It's working — I did it for OTG Global. Take a look at this:
https://github.com/otg-br/global-11x/blob/main/data/scripts/custom_system_event/boosted_creature_system_full.lua#L192
@Under, dá uma olhada nesse sistema. O que eu fiz é bem diferente do seu, mas está funcionando 100%.
Ele exibe monstros como estátuas, mostra informações de boost, porcentagem de XP e loot. Também envia mensagens com essas informações ao logar.
Além disso, dá pra colocar em um piso com actionID, e quando o jogador pisa, aparece a mensagem ou executa um comando. Tudo está funcionando perfeitamente, inclusive o loot e a experiência.
Se quiser, fique à vontade para dar uma olhada, adaptar para o seu GitHub ou até tornar público.
-
Mateus Robeerto deu reputação a Under em Como Adicionar uma Nova Vocação no Canary ServerTutorial Completo: Como Adicionar uma Nova Vocação no Canary Server
1. Entendendo a Lógica das Vocações
No servidor Canary, cada vocação representa uma classe de personagem com habilidades, atributos e características específicas. Para que o servidor reconheça uma nova vocação, é necessário:
- Definir um identificador único (ID);
- Registrar o ClientID (usado para exibição no cliente);
- Especificar um BaseID (para herança de características ou evolução);
- Configurar atributos, fórmulas e habilidades no XML.
2. Alterando a Enumeração das Vocações (Código Fonte C++)
Arquivo: `src/creatures/creatures_definitions.hpp`
Adicione os novos IDs no enum `Vocation_t`:
enum Vocation_t : uint16_t { VOCATION_NONE = 0, VOCATION_SORCERER = 1, VOCATION_DRUID = 2, VOCATION_PALADIN = 3, VOCATION_KNIGHT = 4, VOCATION_MASTER_SORCERER = 5, VOCATION_ELDER_DRUID = 6, VOCATION_ROYAL_PALADIN = 7, VOCATION_ELITE_KNIGHT = 8, VOCATION_WARRIOR = 9, VOCATION_ELITE_WARRIOR = 10, VOCATION_LAST = VOCATION_ELITE_WARRIOR };
3. Atualizando o Script de Vocações (Lua)
Arquivo: `data/libs/vocation.lua`
Adicione os novos valores nas três seções do objeto `VOCATION`:
VOCATION = { ID = { WARRIOR = 9, ELITE_WARRIOR = 10, ... }, CLIENT_ID = { WARRIOR = 0, ELITE_WARRIOR = 0, ... }, BASE_ID = { WARRIOR = 5, ... } }
4. Criando Função de Verificação da Nova Vocação
Arquivo: `data/libs/functions/player.lua`
Adicione a seguinte função no final do arquivo:
function Player.isWarrior(self) return table.contains({VOCATION.ID.WARRIOR, VOCATION.ID.ELITE_WARRIOR}, self:getVocation():getId()) end
5. Configurando as Vocações no XML
Arquivo: `data/XML/vocations.xml`
Adicione o bloco de cada nova vocação com os atributos desejados:
<vocation id="9" clientid="0" baseid="5" name="Warrior" description="a warrior" magicshield="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="4000" gainhpamount="1" gainmanaticks="6000" gainmanaamount="2" manamultiplier="3.0" attackspeed="2000" basespeed="110" soulmax="200" gainsoulticks="15000" fromvoc="5"> <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.1" /> <skill id="1" multiplier="1.1" /> <skill id="2" multiplier="1.1" /> <skill id="3" multiplier="1.1" /> <skill id="4" multiplier="1.4" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="10" clientid="0" baseid="6" name="Elite Warrior" description="an elite warrior" magicshield="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="4000" gainhpamount="1" gainmanaticks="6000" gainmanaamount="2" manamultiplier="3.0" attackspeed="2000" basespeed="110" soulmax="200" gainsoulticks="15000" fromvoc="5"> <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.1" /> <skill id="1" multiplier="1.1" /> <skill id="2" multiplier="1.1" /> <skill id="3" multiplier="1.1" /> <skill id="4" multiplier="1.4" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation>
6. Compilando o Servidor
Após todas as alterações, é obrigatório recompilar o servidor para que as novas vocações sejam reconhecidas corretamente.
Conclusão:
Ao seguir todos os passos, suas novas vocações estarão totalmente integradas ao servidor. Você poderá usá-las para personagens.
-
Mateus Robeerto recebeu reputação de Under em [8.6] TFS 1.5 Downgrade - Mapa Thunder com montaria e modal widow, apenas OTCLIENT.Vi que muitas pessoas estão reclamando e que não funciona, bugs, erros no console, etc. Então, resolvi baixar a base do Thunder feita por MovieBr, atualizei do TFS 1.3 para o TFS 1.5 e corrigi cerca de 80% dos problemas. No entanto, ainda não consigo encontrar alguns bugs. Quem encontrar os bugs pode me relatar pelo Discord: 82mateusroberto. Dependendo do meu dia, pode levar alguns dias para eu responder e corrigir ou não. Acredito que vocês conseguem corrigir os erros, apenas precisam aprender a consertá-los. Não é difícil. Aproveitem para usar como base do seu mapa ou mesmo do projeto Thunder futuramente! Seguem as imagens que mostram a implementação de montaria e modal widow.
Obs: Alguns mapas/cavernas podem estar vazios por falta de adição. Eu não tinha boas ideias para adicionar, mas vocês podem adicionar ao seu gosto. Tenham uma boa utilização e sucesso com o projeto no futuro!
https://www.mediafire.com/file/0jtn2slt2j67666/baiakthunder-master.rar/file
https://www.mediafire.com/file/bougg0q6dlpu2fq/tfs+1.5+source.rar/file
https://www.mediafire.com/file/yq1s63xo6np9v53/860.rar/file
Este servidor só usa o OtClient. Abra o arquivo otclient/modules/game_feature/feature.lua e procure por esta linha.
if (versão >= 860) then adicione abaixo e salve.. pronto
g_game.enableFeature(GamePlayerMounts)
Aqui estão os GIFs
https://imgur.com/UGdQoSS
https://imgur.com/OwJ4hpp
https://imgur.com/7sN1MaJ
Para quem deseja usar uma gamestore personalizada, há uma disponível para TFS 1.5 e 8.6. Já a compartilhei há alguns dias. Dê uma olhada aqui.
-
Mateus Robeerto recebeu reputação de Under em TFS 1.5 {8.6} Nekiro Downgrade com montarias e modal window apenas para OTClient.Para aqueles que estão interessados em adotar a base do Nekiro, gostaria de anunciar que as montarias e a modal widow agora estão disponíveis. Se você deseja implementar sistemas como o de crafting com modal e outros recursos, sinta-se à vontade para fazer o download e testar.
É importante observar que o Nekiro não incluiu mapas nesta versão. Portanto, será necessário migrar seus próprios mapas para o TFS 1.5 8.6. Alternativamente, você pode considerar utilizar a base do Luciano, conhecida como STYLLER OT. Após realizar testes, posso confirmar que essa é uma opção bastante interessante. Esta versão já está completa, permitindo que você utilize seus próprios mapas sem dificuldades significativas.
Além disso, estou disponibilizando os sprites no formato 13x para a versão 8.6, juntamente com os arquivos items.otb e XML. Quanto à correção de eventuais erros, isso fica a seu critério, mas gostaria de ressaltar que não é uma tarefa difícil de realizar.
É com satisfação que compartilho que a source está agora disponível para acesso público. Caso você deseje, pode realizar atualizações através dos commits. Estou preparando uma lista abrangente de atualizações necessárias, pois há muitas modificações a serem feitas.
Para acessar a source, por favor, clique no link abaixo:
https://www.mediafire.com/file/0680a4b624163pd/TFS-1.5-Downgrades-8.60.rar/file
Dentro da SRC que implementei, você encontrará os seguintes recursos:
Sistema de Montaria: Agora você pode adicionar essa funcionalidade ao seu servidor.
Modal Window: Esta é uma janela modal, proporcionando uma experiência mais interativa para os jogadores.
Custom Attributes(Boost e Relfect:: https://github.com/otland/forgottenserver/pull/2807/commits/18f5afa52a36a02ea56dae97b29e683233d15c25.
Além disso, gostaria de compartilhar três repositórios no GitHub que podem ser valiosos para você. Três deles são mantidos pelos usuários @Movie e @ralke23 e a Sarah (MillhioreBT). Esses repositórios contêm recursos e scripts úteis que podem aprimorar a experiência do seu servidor. Sinta-se à vontade para explorar e utilizar esses recursos conforme necessário.
https://github.com/moviebr/TFS-1.5-Downgrades
https://github.com/ralke23/Greed-TFS-1.5-Downgrades
https://github.com/MillhioreBT/forgottenserver-downgrade
Para os interessados nos sprites 13x para a versão 8.6, estou disponibilizando o link para download abaixo:
https://mega.nz/folder/5FQEnT4R#pAbmAAhpBhmcP1jaVkXm8Q
Recomendo também o uso do ObjectBuilder_0_5_5-dev para facilitar o processo:
https://github.com/punkice3407/ObjectBuilder/releases/tag/v0.5.5
Para aqueles que enfrentam dificuldades na compilação do executável, estou disponibilizando um arquivo para download que pode ajudar:
https://www.mediafire.com/file/cxirgq7n1cm2p3i/dlls+e+exe.rar/file
Quanto à ativação do sistema de montarias via OTClient, basta acessar o arquivo game_features/features.lua e localizar a linha: 'if(version >= 860) then!' e adicionar abaixo 'g_game.enableFeature(GamePlayerMounts)'.
É necessário baixar ambos os arquivos, mounts.xml e outfits.xml, para que o OtClient funcione corretamente. Sem esses arquivos, o cliente pode apresentar bugs ou até mesmo crashar sozinho. É obrigatório o uso desses arquivos. Basta fazer o download e colocá-los na base do Luciano. Basta ir até a pasta data/xml e inserir os arquivos lá. Se você estiver usando seu próprio mapa, os arquivos são igualmente necessários, independentemente de suas preferências.
outfits.xml
mounts.xml
ATENÇÃO: Sobre a base do Luciano ou do Nekiro downgrade que você baixou (schemas.sql), ela está totalmente limpa, sem implementações adicionais. Cabe a você implementar por conta própria. Por exemplo, se você for usar o Znote, ele solicitará o esquema e as colunas necessárias. Isso não são erros, são apenas avisos. Você deve procurar pelas colunas necessárias e inseri-las para que funcione corretamente. Isso não é difícil de fazer.
https://github.com/slawkens/myaac
https://github.com/gesior/Gesior2012
https://github.com/Znote/ZnoteAAC/tree/v2
Antes de prosseguir com o download, sugiro que realize uma verificação de vírus nos arquivos. Seguem os links para o scan:
Scan da SRC
https://www.virustotal.com/gui/file/1364b14cab10a34ca7102d3581e427396f8224cc5156d6bc3859b4ebcb155de6?nocache=1
Scan das DLLs e Executável
https://www.virustotal.com/gui/file/603c853dbd5b40ff21b0b0004c129e5039c9954277da22722b2980fcbfcbe0ce?nocache=1
IMPORTANTE: Por favor, note que a funcionalidade de montaria e janela modal não está disponível para versão old do client (CipSoft). Infelizmente, não estou oferecendo suporte para essas versões no momento. No entanto, é possível adquirir uma DLL especial que pode ser injetada no client old (CipSoft) para habilitar essas funcionalidades. Caso esteja interessado, conheço um vendedor confiável que oferece essa DLL. Para mais informações, por favor, entre em contato através do Discord: Sharingan.
-
Mateus Robeerto recebeu reputação de Under em [MY-AAC-GATEWAY + GESIOR BY CLYFE] MercadoPago Pix 100% Automático e Livre de SQL Injection (GRATIS!)Gostaria de saber se é possível fazer isso também no Gesior?
-
Mateus Robeerto deu reputação a Fabi Marzan em Gesior - Baiak-PvP 2020Pra quem tem esse problema:
Warning: parse_ini_file(cache/DONT_EDIT_serverstatus.txt) [function.parse-ini-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\system\load.compat.php on line 750 Warning: fopen(cache/DONT_EDIT_serverstatus.txt) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\system\load.compat.php on line 772 Warning: rewind() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\system\load.compat.php on line 779 Warning: fwrite() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\system\load.compat.php on line 780 Warning: fclose() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\system\load.compat.php on line 781 Warning: fopen(cache/DONT_EDIT_usercounter.txt) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\system\load.compat.php on line 798 Warning: fputs() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\system\load.compat.php on line 800 Warning: fclose() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\system\load.compat.php on line 801
basta ir em htdocs/config:
Dentro você encontrará uma pasta chamada Cache, mova essa pasta para fora da config e restar a página e isso será resolvido.
Outro problema:
Você tem que ir para config.php e procurar por esta linha
$config['site']['google_captcha_enabled'] = true; mude para false
-
Mateus Robeerto deu reputação a Under em [7.72] TFS Nekiro Downgrade Full Setup (Video)Hey bro i love the video, i think you should add some Enligh documentation also on topic based on your steps in the video ( that will enable more users follow your tutorial)
I'm almost 100% sure there is an free ia service to do text based on video then ask GPT to create a topic and BAM update it here!
Great Content!
-
Mateus Robeerto deu reputação a Under em 🔥 [Atualização 05/05/2025] | Revolução no Desenvolvimento de Servidores Tibia – Conheça o Tibia-AI! 🔥Apresentando o Tibia-IA: A IA para Desenvolvimento de Servidores Tibia!
O que é o Tibia-IA?
Um modelo de IA especializado para Tibia! Ele está atualmente em teste gratuito, e eu adoraria que vocês o experimentassem. Basta acessar https://ai.tibiaking.com, criar uma conta e começar a usar totalmente de graça!
Versão Experimental Fechada
Atualmente, algumas funcionalidades ainda estão em desenvolvimento. No momento, apenas a geração de scripts está disponível para o público.
Se encontrarem qualquer problema nos scripts gerados, me avisem! Vamos juntos construir a IA mais poderosa para ajudar no desenvolvimento de servidores Tibia!
Contato direto discord : underewar
Acesse agora: https://ai.tibiaking.com
Como funciona?
Geração automática de scripts LUA para TFS Suporte a diferentes eventos, criaturas, NPCs, magias, etc. Ferramenta em constante evolução para aprimorar o desenvolvimento Novidades em breve confira no site. O acesso ao Tibia-IA está disponível para testes GRATUITOS! Até dia 05/05/2025
Basta criar uma conta em: https://ai.tibiaking.com
Utilize a IA para gerar seus scripts de forma simples e rápida
Envie feedbacks para ajudarmos a tornar a ferramenta ainda melhor!
Problemas relatar diretamente no meu discord pessoal : underewar
-
Mateus Robeerto recebeu reputação de Erimyth em TFS 1.4+ Guild System – Classic Style!Eu estava trabalhando neste sistema apenas por diversão, mas acabei gostando muito dele. Quem se lembra dos velhos dias do TFS 0.x, 0.3.6 e 0.4, quando você podia usar o comando !create guild name para convidar outros jogadores? Bons tempos!
Decidi compartilhá-lo com a comunidade tibiaking. Está funcionando e foi testado na versão 1.4.2 (build 1098). Acredito que deve funcionar a partir da versão 1.3+ em diante.
Aqui estão as imagens..
.Guild_System _ Classic_Style.lua
-
Mateus Robeerto deu reputação a Muvukaa em Tem Como Fazer Esse Sistema Para TFS 0.3.6 8.60 ???@WakeSoft EU NÃO ACHEI ESSE SISTEMA EM NENHUM FORUM DE TIBIA.
-
Mateus Robeerto deu reputação a FeeTads em Tem Como Fazer Esse Sistema Para TFS 0.3.6 8.60 ???qualquer sistema eh possivel fazer em 8.6
depende só do client, pode ter algumas limitações no client.
esse sistema ai parece bem simples, então tem como sim fazer ele no 8.6
mas vai ser um pouco dificil e demorado, relacionado as mecanicas de como upar o level da guild
-
Mateus Robeerto recebeu reputação de Rodrigo94 em (Resolvido)Alguem ai tem cliente 8.6 estendido ?Você tem duas opções: pode usar o DLL para ter o client estendido ou, sem o DLL, fazer a alteração no client para ler o cliente estendido. Vou mandar os dois links...
ddraw.dll
SEM DLL.
-
Mateus Robeerto deu reputação a mane stick em Estou com um problema com as skillssestou com um problema nas skills, tenho um script de comprar skill
ek e rp o maximo que era pra ser 350 de skill mas o meu script ta bugado e fica passando o skill fica bugadao,
o ed e ms ta certinho coloquei limite de ml 200 e ta tudo certo só as skills sword,axe,club,distance,first que estão bugados
é um revscript tfs 1.3 otg
-
Mateus Robeerto recebeu reputação de Black Frost21 em Teleport Problem<!-- StepIn for multiple action IDs leading to the PVP arena --> <movevent event="StepIn" actionid="7400" script="arenaPVP.lua" /> <movevent event="StepIn" actionid="7401" script="arenaPVP.lua" /> <!-- StepIn for returning to the saved position --> <movevent event="StepIn" actionid="7402" script="backsavedposition.lua" />
arenaPVP.lua
function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end -- Save the player's current position to storage local playerPosition = player:getPosition() -- Save the exact X, Y, Z coordinates in player's storage player:setStorageValue(50001, playerPosition.x) -- Save X position player:setStorageValue(50002, playerPosition.y) -- Save Y position player:setStorageValue(50003, playerPosition.z) -- Save Z position -- Teleport the player to the PVP area local pvpPosition = Position(158, 122, 7) -- Coordinates of the PVP area player:teleportTo(pvpPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) -- Send a welcome message player:sendTextMessage(MESSAGE_INFO_DESCR, "Welcome to the PVP area. Fight with honor!") return true end backsavedposition.lua
function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end -- Retrieve the player's original position from storage local x = player:getStorageValue(50001) local y = player:getStorageValue(50002) local z = player:getStorageValue(50003) -- Check if the position is valid (storage returns -1 if nothing was saved) if x == -1 or y == -1 or z == -1 then player:sendTextMessage(MESSAGE_STATUS_WARNING, "Error: No original position found.") return true end -- Increment Y by 1 to move the player down one tile y = y + 1 -- Create the corrected original position object using the stored values local originalPosition = Position(x, y, z) -- Teleport the player back to their adjusted original position player:teleportTo(originalPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end
-
Mateus Robeerto deu reputação a Fabi Marzan em Spell Effect na direção que o player esta olhandoImagino que o CONST_ME_SLASH seja igual para todos os direçãos, você teria que criar outro efeito mas para o outro lado
então você tem que usar
if creature:getDirection() == DIRECTION_NORTH then
if creature:getDirection() == DIRECTION_EAST then
if creature:getDirection() == DIRECTION_SOUTH then
if creature:getDirection() == DIRECTION_WEST then
-
Mateus Robeerto recebeu reputação de L3K0T em (Resolvido)Adicionar para ganhar damage_percent no script resethttps://tibiaking.com/forums/topic/111239-reset-system-otx-2/?tab=comments#comment-573049
-
Mateus Robeerto recebeu reputação de L3K0T em (Resolvido)Trocar varios items por 1 por avalanvaBoa tarde! Fiz um script melhor e bem simples. É possível entender o script, Segue o GIF para ver como ele funciona e foi testado no tfs 0.4, tudo certo. Divirta-se
function onUse(cid, item, frompos, item2, topos) local playerLocation = getCreaturePosition(cid) local itemData = { {itemId = 2400, x = 722, y = 658, z = 7}, {itemId = 2401, x = 722, y = 657, z = 7}, {itemId = 2376, x = 724, y = 658, z = 7} -- Adicione mais itens para combinação aqui } local newItemId = 2406 -- ID do novo item após a combinação local newItemPosition = {x = 724, y = 657, z = 7} -- Posição para o novo item local foundItems = {} local hasAllItems = true for _, data in ipairs(itemData) do local tileItem = getTileItemById({x = data.x, y = data.y, z = data.z}, data.itemId) if tileItem.uid > 0 then table.insert(foundItems, tileItem.uid) else hasAllItems = false break end end if hasAllItems then for _, uid in ipairs(foundItems) do if not doRemoveItem(uid, 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Erro ao remover um dos itens necessários.") return false end end local newItem = doCreateItem(newItemId, 1, newItemPosition) if newItem ~= LUA_ERROR then doSendMagicEffect(newItemPosition, 39) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Erro ao criar o novo item.") return false end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não possui todos os itens necessários para a combinação.") return false end return true end
@deza
20231130_150112.mp4 -
Mateus Robeerto recebeu reputação de L3K0T em (Resolvido)Adicionar (CHANCE) no scriptlocal levels = { [-1] = {itemid = 6541, chance = 10}, [10] = {itemid = 6542, chance = 20}, [20] = {itemid = 6543, chance = 5}, [30] = {itemid = 6544, chance = 30}, [40] = {itemid = 6545, chance = 80}, } local config = { storage = 19333, chance = 1, --- chance de achar um item ou não k = 1, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } local terra = {11787} function getDrops(cid) local drops = {} for i = -1, getPlayerStorageValue(cid, config.storage) do if levels[i] then local item = levels[i].itemid local chance = levels[i].chance if config.chance >= math.random(1, 100) then -- Ajustado para um intervalo de 1 a 100 if math.random(1, 100) <= chance then table.insert(drops, item) end end end end return drops end function onUse(cid, item, fromPosition, itemEx, toPosition) local drops = {} if isInArray(terra, itemEx.itemid) then drops = getDrops(cid) doPlayerSetStorageValue(cid, config.experience, getPlayerStorageValue(cid, config.experience) + 1) local experience = getPlayerStorageValue(cid, config.experience) if experience >= (8 + (getPlayerStorageValue(cid, config.storage) ^ 2)) / config.k then doPlayerSetStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage) + 1) doPlayerSendTextMessage(cid, 27, "Parabens, voce subiu de nivel! Seu nivel atual e " .. getPlayerStorageValue(cid, config.storage) .. ".") if getPlayerStorageValue(cid, config.storage) == 100 then doPlayerSendTextMessage(cid, 20, "[MINING] --> Por alcancar o nivel " .. getPlayerStorageValue(cid, config.storage) .. " voce foi premiado com o capacete de mineracao.") doPlayerAddItem(cid, 7497, 1, true) end end if config.chance >= math.random(1, 150) then if #drops >= 1 then local item = drops[math.random(1, #drops)] doPlayerSendTextMessage(cid, 27, "[MINING] --> Voce encontrou um(a) " .. getItemNameById(item) .. ".") doSendAnimatedText(toPosition, "Sucesso", 210) doPlayerAddItem(cid, item, 1, true) end doSendMagicEffect(toPosition, 3) else doSendAnimatedText(toPosition, "Tack", 215) doSendMagicEffect(toPosition, 2) return true end elseif itemEx.itemid == item.itemid then doPlayerSendTextMessage(cid, 27, "[MINING] --> Seu nivel na mineracao e: [" .. getPlayerStorageValue(cid, config.storage) .. "].") else return false end return true end
-
Mateus Robeerto recebeu reputação de L3K0T em (Resolvido)System DAMAGElocal config = { effectonuse = 14, levelsdamage = 100, storagedamage = 14335 } function onUse(cid, item, frompos, item2, topos) local currentDamage = getPlayerStorageValue(cid, config.storagedamage) or 0 if currentDamage < config.levelsdamage then local newDamage = currentDamage + 1 doRemoveItem(item.uid, 1) doSendMagicEffect(topos, config.effectonuse) setPlayerStorageValue(cid, config.storagedamage, newDamage) local message = string.format("Seu damage foi aumentado para [%d/100].", newDamage) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, message) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já atingiu o nível máximo de damage.\nParabéns!!!!") return false end local damage = getPlayerStorageValue(cid, config.storagedamage) or 0 local calculatedDamage = damage * 2.5 -- Fórmula para calcular o damage baseado no valor storage. local finalMessage = string.format('Seu damage atual é: %d', calculatedDamage) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, finalMessage) return true end Se o tópico estiver resolvido, por favor, marque como resolvido e crie outro tópico para suas dúvidas/ajuda, etc. Isso ajuda a evitar scams, já que muitos usuários estão procurando pelo sistema necessário. Pode ficar confuso aqui. É melhor marcar como resolvido e criar outro tópico apenas para suas dúvidas.
-
Mateus Robeerto recebeu reputação de L3K0T em (Resolvido)[SQLite] -=[TFS]=- 0.4 8.60 [CREATURESCRIPT] VIP Days Não Funciona Alguem Pode me Ajudafunction onLogin(cid) local storageKeys = { 13545, } local alreadyReceived = true for _, storageKey in ipairs(storageKeys) do if getCreatureStorage(cid, storageKey) ~= 1 then alreadyReceived = false break end end if not alreadyReceived then for _, storageKey in ipairs(storageKeys) do if getCreatureStorage(cid, storageKey) ~= 1 then doCreatureSetStorage(cid, storageKey, 1) end end local days = 2 addVipDays(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu " .. days .. " dias de VIP.") end return true end