Jump to content

Leaderboard

  1. Majesty

    Majesty

    Imperadores


    • Points

      20

    • Content count

      4,470


  2. MarcosPacheco

    MarcosPacheco

    Cidadãos


    • Points

      2

    • Content count

      9


  3. Basidium Sapiens

    Basidium Sapiens

    Cidadãos


    • Points

      1

    • Content count

      1


  4. Elver Maguh

    Elver Maguh

    Anciões


    • Points

      1

    • Content count

      734



Popular Content

Showing content with the highest reputation since 01/18/2020 in all areas

  1. 2 points
    Majesty

    [OTServBR-Global 12.x] Autoloot + Modal Window

    [OTServBR-Global 12.x] Autoloot + Modal Window config.lua (linhas 42 a 45): data/actions/actions.xml: data/actions/scripts/autoloot.lua: data/creaturescripts/creaturescripts.xml: data/creaturescripts/scripts/autoloot.lua: data/events/scripts/monster.lua: data/globalevents/globalevents.xml: data/globalevents/scripts/autoloot.lua: data/lib/core/container.lua: data/talkactions/scripts/player/add_autoloot.lua: data/talkactions/scripts/player/autoloot.lua: data/talkactions/talkactions.xml: schema.sql: src/configmanager.cpp (linha 137): src/configmanager.h (linha 117): src/iologindata.cpp (linhas 714 a 729): src/iologindata.cpp (linhas 1078 a 1103): src/luascript.cpp (linha 2013): src/luascript.cpp (linhas 2581 a 2585): src/luascript.cpp (linhas 11226 a 11335): src/luascript.h (linhas 261 a 265): src/player.cpp (linhas 4818 a 4832): src/player.h (linhas 1321 a 1324): src/player.h (linhas 1461 a 1463): Obs: depois de adicionar o sistema, compile as sources e obtenha um novo executável. Como usar:
  2. 2 points
    Majesty

    OTServBR-Global 12.x

    Tópico atualizado.
  3. 2 points
    Majesty

    OTServBR-Global 12.x

    Tópico atualizado! Servidor OTServBR-Global agora com protocolo 12! 1º servidor open source com protocolo 12!
  4. 1 point
    Majesty

    TFS 1.2 Npc Aldo

    Em seu servidor, as funções descritas nos erros estão faltando. Segue abaixo, as libs para npc do TFS 1.2: [Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content] Consulte os arquivos, verifique e adicione as funções que faltam.
  5. 1 point
    Basidium Sapiens

    Seu último trabalho!

    Estou com um projeto estilo rookgaard porém pvp, em andamento. Irei postar algumas imagens ao decorrer desta semana, começando por estas três.
  6. 1 point
    MarcosPacheco

    [ Equipe ] Formação de equipe - Global + Custom

    Olá, estou em busca de pessoas que tem otserv como hobby, assim como eu para ajudar a dar continuidade ao servidor na qual já trabalho há algum tempo. A ideia é ter 2 servers, onde 1 é focado em RPG, com todas missões do global + areas custons focado em RPG e o segundo um de "zoação" com rates altas server baseado na versão 1.3 OtBR. o server está 90% pronto para se colocar online. Launcher 100% Site 90% Ot 90% Necessário apenas conhecimento no que desejar contribuir. Entre em contato para mais detalhes Marcos#9999 Caso deseje apenas acompanhar o andamento do projeto, este é o link público do discord [Hidden Content]
  7. 1 point
    douglera22

    OTServBR-Global 12.x [Docker]

    Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). OTServBR-Global, Versão 12 / Cliente Versão 12 disponibilizado para esse server / Site MyACC. Base: OTServBR-Global 12.x Qual é a sua pergunta? Bom dia, estou com uma "dificuldade" no docker. Pois bem, consegui fazer ele rodar, demorou um pouco pra compilar mas subiu e ficou online. O problema, é que se eu derrubo os containers e subo de novo, ele compila tudo novamente. Gostaria de após compilado uma vez, ajustar para quando eu der um docker-compose up -d ele apenas subir os serviços, para eu conseguir deixar online mais rápido, pois a máquina que estou usando pra testar não é das melhores, então o processo de compilar tudo novamente e executar o tfs demora uns 15-20 minutos. Alguém consegue me ajudar com isso? Desde já, muito obrigado!
  8. 1 point
    Majesty

    TFS v1.3 compilado

    Você já marcou um dos meus posts como melhor resposta o que deixa o tópico como resolvido.
  9. 1 point
    Majesty

    TFS v1.3 compilado

    @MillakGibion Deixa a pasta data, config.lua.dist (config.lua), key.pem, todas as dll, executável e o schema.sql.
  10. 1 point
    Majesty

    TFS v1.3 compilado

    [Hidden Content] > AppVeyor builds for Windows [Hidden Content] Configuration: Release > Artifacts.
  11. 1 point
    Majesty

    [OSX] Remere's Map Editor 3.6.1 - Abrindo Mapa 12.x

    Muito obrigado pela sua contribuição, seu tópico de conteúdo foi aprovado!Nós do OTServ Brasil agradecemos, seu conteúdo com certeza ajudará a muitos outros. Você recebeu +1 REP!
  12. 1 point
    HenneT

    [OSX] Remere's Map Editor 3.6.1 - Abrindo Mapa 12.x

    Remere's Map Editor 3.6.1 - Abrindo Mapa 12.x no OSX Faça o download do RME para OSX de [Hidden Content] Uma vez instalado, vá para pasta Applications, clique com o botão direito no Remere's Map Editor.app e selecione Show Package Contents: Dentro pasta do aplicativo, crie uma pasta chamada 1100 em "Contents/MacOS/data" e copie os arquivos items.xml e items.otb de [Hidden Content], como na imagem abaixo: Abra o arquivo clients.xml que está localizado na pasta (Contents/MacOS/data) e adicione o novo <otb /> e <client /> conforme o código abaixo: <client_config> <otbs> ... <otb client="11.00" version="3" id="63"/> </otbs> <clients> ... <client name="11.00" otb="11.00" default="true" visible="true" data_directory="1100"> <otbm version="3"/> <extensions from="8.20 - 8.31" to="11.00"/> <data format="10.57" dat="0x4A10" spr="0x59E48E02"/> </client> </clients> </client_config> Uma vez terminado as configurações, abre o RME e siga os passos abaixo: Selecione a opção Preferences; Selecione a aba Client Version; Altere o Default client version para 11.00; Desmarque a opção Check file signatures; Na listagem de clientes, localize o cliente 11.00, selecione a pasta do Tibia Client 10 que contém os arquivos Tibia.spr e Tibia.dat que podem ser extraidos de ([Hidden Content] Client 10.rar); Selecione Apply; Agora é só seguir o processo padrão de abrir o mapa no aplicativo... HenneT,
  13. 1 point
    Majesty

    SetHiddenHealth não funciona corretamente no cliente 11

    O cliente 11 disponibilizado aqui ([Hidden Content] tibia-1144-sprites-até-12158706/ ) é para a branch que não é mais atualizada. Para o OTServBR-Global 12.x (branch develop) é utilizado o cliente 12: [Hidden Content] Não vamos resolver problemas relacionados ao cliente 11. Obs: não remova o formulário pré-definido do tópico e nem partes dele (Regras da seção).
  14. 1 point
    Majesty

    OTServBR-Global 12.x [DÚVIDA]

    Compile as sources com o tutorial abaixo: Ou baixe o executável já compilado + DLL's no AppVeyor: [Hidden Content] E siga o tutorial abaixo: Obs: No tópico do servidor e post #2 ([Hidden Content]), tem explicado sobre as coisas. Também explicado em: [Hidden Content]
  15. 1 point
    MarcosPacheco

    [OTC] OTClientV8

    Atualização versão 1.9: - action bars ( fase inicial ) - bug fixes para versões 7.6 - otimização de uso de ram - bug fixes para battle list - shop in game do tibia clássico ( compatível com tfs 1.3 ) - novo preview login - melhorias na visão extendida - armazenamento opcional do mapa em cache - luajit 2.05 para versões linux - Retiro a news do client (porém ainda compatível se usar dar versões anteriores) - melhorias no bot - novas fontes - bug fixes vendas nos npcs Novas funções creature:setInformationColor(color) creature:resetInformationColor() creature:setInformationOffset(x,y) creature:getInformationOffset() g_app.doScreenshot(filename) Novas funções pra bot screenshot(filename) Callbacks: onAnimatedText(function(thing, text) end) onStaticText(function(thing, text) end
  16. 1 point
    Kyogron

    Object builder para tfs 1.3

    E ai gente, bom depois de muito sofrimento o membro do Discord @Marcos me ajudou com uma solução, e é bem simples por sinal. Segue abaixo o que é preciso fazer, o que eu fiz, deletei todos os efeitos e no primeiro eu montei em png, o resto eu simplesmente vou importando como mostra a opção abaixo, e assim já vai indo todas as sprites perfeitamente como eu quero.
  17. 1 point
    Majesty

    [Windows][VC2019] Compilando Sources RME (32-bit/64-bit)

    [Windows][VC2019] Compilando Sources RME (32-bit/64-bit) Tutorial explicando como compilar as sources do Remere's Map Editor com o Visual Studio 2019. 1 - Downloads Necessários - Visual Studio 2019 Community: [Hidden Content] - Microsoft Visual C++ 2019 Redistributable: (32-bit download, 64-bit download) - Git: [Hidden Content] 2 - Instale os softwares necessários - Instale o Visual Studio 2019 (Obs: - Pacotes de Idiomas (Inglês)). - Instale o Git. - Utilize o Git Bash ou Windows Powershell no diretório C:\ Git Bash: cd C:\ Windows Powershell: cd C:\ - Para fazer a instalação completa do VCPKG, execute os comandos abaixo no Git Bash ou Windows Powershell: 3 - Instalação das bibliotecas VCPKG - Execute o comando com o Git Bash ou Windows Powershell. - Escolha 32-bit ou 64-bit ou ambos. A instalação levará algum tempo então seja paciente. - Para compilação em 32-bit: ./vcpkg install wxwidgets boost libarchive - Para compilação em 64-bit: ./vcpkg install wxwidgets:x64-windows boost:x64-windows libarchive:x64-windows - Execute o comando com o Git Bash ou Windows Powershell para tornar as bibliotecas disponíveis para o Visual Studio: ./vcpkg integrate install 4 - Sources Remere's Map Editor: - No Git Bash ou Windows Powershell: - Crie uma pasta onde queira salvar as sources do Remere's Map Editor (mkdir /c/desenvolvedor && cd /c/desenvolvedor) - Faça o download das sources do Remere's Map Editor com o comando abaixo: git clone [Hidden Content] 5 - Compilando as Sources do Remere's Map Editor: - Abra C:\desenvolvedor\rme\vcproj\RME.sln. - Escolha Debug/Release e Win32/x64 na barra de ferramentas. - Na barra de ferramentas clique em Project > RME properties > Debugging > Set Environment para: PATH=%PATH%;$(SolutionDir)..\dependencies\vs\bin - Clique em OK para salvar as alterações. - Pressione F5. 6 - Créditos hjnilsson: [Hidden Content] Elime1: [Hidden Content]/wiki/Compiling-on-Windows Majesty (Tradução) Microsoft - VCPKG: [Hidden Content]
  18. 1 point
    Akira

    Pokemon Passive System (No-Bugs)

    Então recentemente achei esse sistema "perdido", porem ele estava com alguns bugs sinistros, os quais eram: Pokémon selvagem estava recebendo xp negativa quando seu pokémon morria. Você upava 70k de leveis caso matasse algum pokémon no selfdestruction. Por fim estes bugs foram removidos, agora estarei postando o sistema corrigido para vocês. Em monster.cpp e procure pela função: void Monster::onThink(uint32_t interval) E dentro dela, procure pela condição: else if(!targetList.empty()) E troque por esta: else if(!targetList.empty()) { if(!followCreature || !hasFollowPath) searchTarget(); } Agora procure pela função: bool Monster::selectTarget(Creature* creature) E troque por esta: bool Monster::selectTarget(Creature* creature) { #ifdef __DEBUG__ std::cout << "Selecting target... " << std::endl; #endif if(!isTarget(creature)) return false; Creature* target = creature->isPlayerSummon() ? creature->getMaster() : creature; if(!isHostile() && !hasBeenAttacked(target->getID()) && target->getAttackedCreature() != this) return false; CreatureList::iterator it = std::find(targetList.begin(), targetList.end(), creature); if(it == targetList.end()) { //Target not found in our target list. #ifdef __DEBUG__ std::cout << "Target not found in targetList." << std::endl; #endif return false; } if(setAttackedCreature(creature)) Dispatcher::getInstance().addTask(createTask(boost::bind(&Game::checkCreatureAttack, &g_game, getID()))); return setFollowCreature(creature, true); } --- Créditos pelo sistema e pela correção: Tony Araujo Crypter
  19. 1 point
    Majesty

    Remere's Map Editor 3.6.1

    Remere's Map Editor 3.6.1 Este é um editor de mapas para OTServ, que é uma implementação de código aberto do MMORPG Tibia. Correções de bugs: - Corrigido o problema do editor travar ao salvar quando colocado spawn onde não existe piso. WxWidgets atualizado: - Usa a versão mais recente do wxWidgets (3.1.3, as versões anteriores do RME usavam 3.1.1). As alterações com possíveis melhorias são: - Corrige vários problemas com telas de alto DPI. - Suporte para per-monitor DPI e alterações dinâmicas de DPI no MSW. - Em geral, muitas correções para várias aparências de controles em alto DPI. - Correções importantes de erros para tratamento de foco em wxOSX. Menções da versão 3.6: - Novas barras de ferramentas: Acima, você também pode ver alguns novos pincéis que foram adicionados para o cliente 10.98. - Janela de boas vindas: Agora, ao iniciar o editor, você verá esta janela. Aqui você pode ver todos os seus mapas recentes. Basta clicar em qualquer um deles para começar a editar. Como você pode ver, você pode escolher imediatamente as preferências. E aí você pode definir sua versão e caminho padrão do cliente para .dat e .spr. Portanto, na primeira vez em que você abre o editor, você não é mais obrigado a escolher 10.98 antes de poder escolher qualquer outro cliente. Changelog: [Hidden Content] Wiki: [Hidden Content] Source: [Hidden Content] Download: [Hidden Content] Créditos: [Hidden Content]/graphs/contributors
  20. 1 point
    Majesty

    Cobra Bastion

    Cobra Bastion Download de Mapa - Cobra Bastion. Update Tibia 12.20. 1 - Imagem: 2 - Downloads: Mapa Cobra Bastion: Cobra_Bastion.rar Items: items.rar Cliente 10: [Hidden Content] Client 10.rar RME: [Hidden Content](11%2B).rar 3 - Créditos: Miguel Oliveira (Mapa Cobra Bastion)
  21. 1 point
    prophets Designer

    Prophets Designer

    Fala, galerinha! Trabalho com designer de artes gráficas, vídeo trailer e sprites. Vários dos meus trabalhos estão nos servidores ativos e de extrema qualidade, que sirvam como primeiras impressões e referências. Já trabalhei para vários servidores sempre facilitando o pedido para os administradores, com foco total em ótima qualidade e resolução, e preocupação com o servidor do cliente.A entrega é em imediato. O método de pagamento é definido em um acordo com o cliente. Detalhe sua ideia que trabalharei em cima para a magia acontecer 😄 Contato: Discord: prophets#1614
  22. 1 point
    Majesty

    [Linux - Ubuntu/Debian]OTServBR-Global + Apache + MySQL + MyAAC

    [Linux - Ubuntu/Debian]OTServBR-Global + Apache + MySQL + MyAAC Vídeo Tutorial: [Hidden Content] Wiki: [Hidden Content] OTServBR-Global: MyAAC: MyAAC - login.php para Tibia 12: Cliente Tibia 12: Créditos: Estz - Fol2estz#0992 (Vídeo Tutorial) Slawkens (MyAAC) TFS, OTX, OTBR (OTServBR-Global) Cipsoft (Cliente Tibia 12)
  23. 1 point
    byd4ddy

    Liberando acesso a quests e cidades [Atualizado]

    OLÁ AMIGOS, PARA VOCÊ QUE TEM DIFICULDADE QUE NEM EU TIVE EM ADICIONAR A ACESSOS A QUESTS E CIDADES TRAGO ESSE MINI TUTORIAL. COLEM ESSE SCRIPT ABAIXO DA LINHA 100, DO SEU LOGIN.LUA, ELE JÁ VAI LIBERAR ACESSOS A WOTE E SERVICE YALAHAR, IMBUIMENT E TBM ACESSO A YALAHAR POR BARCO. ESSE OUTRO SCRIPT VOCES PODEM ADICIONAR DEPOIS DA LINHA 230 DO SEU LOGIN.LUA, ELE VAI LIBERAR ACESSOS A MAIORIA DAS QUEST, SE QUISEREM ADICIONAR MAIS ALGUMA QUEST QUE FALTOU, VOCÊS PODEM DIGITAR "nome da quest", ANTES DE QUALQUER QUEST QUE ESTÁ ESCRITA OBS: AS LINHAS DO SEU LOGIN.LUA PODEM SER DIFERENTES, ENTÃO CUIDADO AO ADICIONAR OS CÓDIGOS! IMAGENS
  24. 1 point
    Majesty

    OTServBR-Global 12.x

    OTServBR-Global 12.x Download de servidor Global na versão 12.x. 1º servidor open source com o Protocolo 12! Obs: servidor apoiado pelo OTServ Brasil (OTBR). Este projeto tem como objetivo trazer para a comunidade OpenTibia um servidor de Tibia Global sempre atualizado com os melhores conteúdos, limpos e funcionais. Faça parte do desenvolvimento do projeto, pois será disponibilizado gratuitamente para todos. 1- Características: 2 - Imagens: 3 - Downloads: Servidor - Protocolo 12: Github Servidor Compilado: Appveyor Cliente 12: Ferramentas: [Hidden Content] Store para Tibia 12: Tutoriais: Post #2. 4 - Créditos: Para dúvidas e/ou problemas sobre instalação e configuração do servidor, utilize a seção Suporte: [Hidden Content] Para reportar bugs/erros do servidor, crie issue no Github: [Hidden Content]
  25. 1 point
    Gengo

    The Forgotten Server 1.3 | Compilado x64

    The Forgotten Server 1.3 Download do The Forgotten Server 1.3 compilado x64, commit master mais recente. Como alguns estão tendo dificuldades de compilar as source do tfs mais recentes, resolvi compilar e disponibilizar para a comunidade. Download: [Hidden Content] Scan: [Hidden Content] Tutorial utilizado para compilar: Créditos: Desenvolvedores TFS: [Hidden Content]
  26. 1 point
    Majesty

    OTServBR-Global 12.x

    Tutoriais: Mapping: Programação: Compilando Sources OTServBR-Global: Infraestrutura: [Linux - Ubuntu/Debian]OTServBR-Global + Apache + MySQL + MyAAC: [Windows][MySQL]OTServBR-Global + Uniform Server + MyAAC: [Windows][MySQL]OTServBR-Global + Uniform Server + GesiorAAC: [Windows][MySQL]OTServBR-Global + Uniform Server + ZnoteAAC: Downloads: Cliente 12: Ferramentas: [Hidden Content] Store para Tibia 12: FAQ 1: Pergunta: O executável fecha na hora de abrir o mapa, o que fazer? Resposta: Pasta data/world, descompacte o world.rar e deixe junto o otservbr.otbm + mapas complementares com o otservbr-house.xml e otservbrp-spawn.xml. 2: Pergunta: As imagens do store não aparecem no cliente 11, o que fazer? Resposta: Vá até pasta do cliente em packages/Tibia/storeimages e apague as pastas data8 e prepared. Depois, reinicie o XAMPP ou UniformServer, servidor e o cliente. E com os nomes, categorias, etc corretos no gamestore.lua, o cliente deverá carregar as imagens no shop. Para dúvidas e/ou problemas, utilize a seção Suporte: [Hidden Content]
  27. 1 point
    Majesty

    [Windows][VC2017] Compilando Sources OTXServer 2 e 3

    [Windows][VC2017] Compilando Sources OTXServer 2 e 3 Tutorial explicando como compilar as sources do OTXServer 2 e 3 com o Visual Studio 2017. 1 - Downloads Necessários - Visual Studio 2017: [Hidden Content] - Microsoft Visual C++ 2017 Redistributable: (32-bit download, 64-bit download) - TFS SDK 3.2 - OTX(Bibliotecas): [Hidden Content] - Bibliotecas Boost C++ 1.64.0: (32-bit download, 64-bit download) - Sources OTXServer: (OTXServer 2, OTXServer 3) 2 - Instale os softwares necessários - Instale as bibliotecas Boost C++ 1.64.0. 3 - Visual Studio 2017 - Na tela inicial do Visual Studio, no produto Visual Studio Community 2017 clique no botão Instalar. - Na próxima tela, selecione Desenvolvimento para Desktop com C++. - Na mesma tela em Resumo, selecione: - Depurador Just-In-Time; - Conjunto de ferramentas VC++ 2017 versão 15.9 v14.16 ferramentas v141 [x86 e x64]; - Ferramentas de criação do perfil do C++; - SDK do Windows 10 (10.0.17763.0); - Ferramentas do Visual C++ para CMake; - Visual C++ ATL para x86 e x64; - SDK do Windows 10 (10.0.17134.0) para Desktop [x86 e x64]; - SDK do Windows 10 (10.0.16299.0) para Desktop [x86 e x64]; - Conjunto de Ferramentas do VC++ 2015.3 v140 (x86, x64). - Componentes Individuais: - SDK do CRT Universal do Windows; - SDK do Windows 8.1; - Pacotes de Idiomas (Inglês). - Depois de baixado e instalado o Visual Studio Community 2017 e suas ferramentas, você estará apto a compilar as sources do OTXServer. 4 - TFS SDK 3.2 - Extraia os arquivos do TFS SDK 3.2 - OTX. - Antes de rodar o arquivo "register_tfssdk_env.bat", clique com botão direito nele e em Editar. - Você encontrará escrito assim: setx TFSSDKDir %CD% - Você deverá colocar as "" (aspas duplas) em %CD% e adicionar "pause" no final (lembre-se de salvar o arquivo). - Ficando assim: setx TFSSDKDir "%CD%" pause - Rode o arquivo e ele irá abrir uma janela cmd informando com sucesso o valor salvo. Obs: fazendo isso, você não precisará adicionar as bibliotecas manualmente. 4.1 - Boost C++ - Mova o arquivo "register_boost_env.bat" que está na pasta do TFS SDK 3.2 para o diretório onde foi instalado o Boost C++ 1.64.0 (Exemplo: C:\local\boost_1_64_0) - Antes de rodar o arquivo "register_boost_env.bat", clique com botão direito nele e em Editar. - Você encontrará escrito assim: setx BOOST_ROOT %CD% - Você deverá colocar as "" (aspas duplas) em %CD% e adicionar "pause" no final (lembre-se de salvar o arquivo). - Ficando assim: setx BOOST_ROOT "%CD" pause - Rode o arquivo e ele irá abrir uma janela cmd informando com sucesso o valor salvo. Obs: fazendo isso, você não precisará adicionar as bibliotecas manualmente. 4.2 - Adicionando manualmente os diretórios das bibliotecas - Se os .bat não funcionarem, adicione manualmente os diretórios. - Utilize a Tecla do logotipo do Windows + Pause para acessar as Propriedades do Sistema. - Acesse Configurações avançadas do sistema. - Na aba Avançado, clique em Variáveis de Ambiente. - Em variáveis de usuário adicione os diretórios do TFSSDKDir e BOOST_ROOT. - Exemplo: 5 - Compilando as Sources do OTXServer OTX 3: - Encontre o diretório vc14 do OTXServer e abra o arquivo TheOTXServer.sln. OTX 2: - Encontre o diretório sources/msvc do OTXServer e abra o arquivo TheOTXServer.sln. - Abrirá uma nova janela para Examinar Ações de Solução, basta selecionar conforme as opções abaixo: - Exemplo: - Feito isso, você estará apto a compilar as sources do OTXServer. - No Visual Studio, escolha a opção Release e a solução "Win32" ou "x64". - Para compilar as sources, clica em Build no menu e depois em Build Solution. - As sources serão compiladas com sucesso. 6 - DLL's Necessárias OTX 3 / OTX 2: - Para rodar o servidor você precisa baixar as DLL's, elas são encontradas para download neste link: [Hidden Content] 7 - Créditos mattyx14: [Hidden Content] Ninja: [Hidden Content] Majesty (Tutorial de compilação no VS2017) Microsoft
  28. 1 point
    shoeei

    Reparar Soft com Talkaction

    Opa galere. Trago para vocês mais um script feito por mim, esse script eu fiz agora para o servidor Baiak de um amigo, já foi testado e funcionando 100%. È simples, mas para servidores 4FUN pode ser bem legal :pac:. Autor: Shoeei Versão Testada: TheForgottenServer 8.60 Nível do Script: Muito fácil O que ele faz? Ao você falar !soft ou qualquer parametro definido por você no XML o player irá reparar a sua soft boots (:, por isso disse que era para baiak, porque geralmente em servidores globais é normal por NPC, mas para Baiak fica legal. Codigos, codigos e codigos Vá para data/talkactions/scripts e crie 1 arquivo chamado soft.lua e cole isso dentro dele, -- by Shoeei for OTServ Brásil Fórum -- function onSay(cid, words, param, channel) local custo = 10000 local id = 2640 local idworn = 10021 if(getPlayerItemCount(cid, idworn) > 1) and getPlayerMoney(cid) >= custo then doPlayerRemoveMoney(cid, custo) doPlayerAddItem(cid, id, 1) doPlayerSendTextMessage(cid, 25, "Você acabou de reparar a sua soft boots.") else doPlayerSendCancel(cid, "Você não tem dinheiro o suficiente para reparar a sua soft boots.") end return true end Agora volte uma pasta e abra o arquivo chamado talkactions.xml e pressione CTRL + F e escreva isso, <!-- Players --> e logo abaixo adicione está linha, <talkaction words="!soft;/soft" event="script" value="soft.lua"/> Salve e feche, e pronto agora os players podem reparar as suas soft boots apenas digitando !soft Acho que vai ser útil para servidores de XP Alta, mas de qualquer forma, espero que alguem aproveite ele.
  29. 1 point
    Oneshot

    NPCs

    NPCs Lib Jiddo Introdução Neste tutorial estarei ensinando como programar NPCs, a parte um pouco exaustiva dos OTservers. Estarei mostrando a programação em XML e em LUA, ao modo que a biblioteca do Jiddo System nos proporciona, e qual a diferença entre as duas maneiras de programar-los. Vamos lá! O que são NPCs? A sigla NPC, no mundo do RPG, significa non playable character, traduzido "personagem não jogável". Logo, NPC é todo personagem controlado pelo sistema e não pelo jogador, no mundo do Tibia, NPCs são aqueles com que sua personagem pode conversar, negociar e etc. Criando um NPC Desde muito tempo, um certo Jiddo, criou um padrão para a programação de NPCs em OpenTibia. Não me pergunte o por quê, mas que isso facilitou a vida dos scripters, facilitou e MUITO. Então, comecemos a analisar esse sistema do arquivo XML que define a aparência do nosso NPC e outros tipos de parâmetros. <?xml version="1.0" encoding="UTF-8"?> <npc name="" script="" walkinterval="" floorchange=""> <health now="" max=""/> <look type="" head="" body="" legs="" feet="" addons=""/> </npc> Vou fazer um dicionário com os significados de cada parâmetro encontrado no código acima, vejamos, Okay, vamos configurar um NPC para o nosso tutorial, <?xml version="1.0" encoding="UTF-8"?> <npc name="Tutorial" script="data/npc/scripts/tutorial.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="128" head="114" body="132" legs="114" feet="115" addons="0"/> </npc> Criamos o NPC para o tutorial, mas uma coisa é certa, se colocarmos ele em um servidor, ele fará alguma coisa? Então vamos estudar sobre os parâmetros de configuração! Parâmetros Os parâmetros de NPC servem para configurar, de um modo rápido, como o NPC agirá quando o jogador dialogar com ele. Existem vários parâmetros e cada um tem uma função específica: Desde configurar as mensagens que o NPC falará, até mudar os itens que ele venderá. Os parâmetros são configurados no próprio arquivo XML do NPC, desta maneira, <npc name="Tutorial" script="data/npc/scripts/tutorial.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="128" head="114" body="132" legs="114" feet="115" addons="0"/> <parameters> <parameter key="" value=""/> </parameters> </npc> Para cada parâmetro que você configurar em um NPC será necessário uma nova linha dentro da tag parameters Sabendo das definições de cada parte acima, vamos configurar os parâmetros do nosso NPC de tutorial, mas primeiro, quero mostrar-lhes todos os parâmetros e seus significados. (A maioria diz a respeito de mensagens) Certo, já temos os parâmetros essenciais para a configuração de um NPC, então vamos criar um NPC qualquer baseado no exemplo já dado.Algumas observações que tenho que fazer: - Use {} para negritar uma palavra em uma mensagem. Por exemplo: {LOL}. Funciona apenas no novo sistema de NPCs. - shop_sellable funciona do mesmo jeito que o shop_buyable, mas serve para vender itens para o NPC. - shop_buyable_containers serve para vender itens em backpacks. Não sei configurá-lo no XML. <npc name="Tutorial" script="data/npc/scripts/tutorial.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="128" head="114" body="132" legs="114" feet="115" addons="0"/> <parameters> <parameter key="message_greet" value="Hello! You want to {trade} some items with me?"/> <parameter key="message_farewell" value="Bye, Bye!"/> <parameter key="message_idletimeout" value="Hey! Are you okay? Say something!"/> <parameter key="message_walkway" value="..."/> <parameter key="module_shop" value="1"/> <parameter key="shop_buyable" value="raspberries,8840,10;brown bread,2691,8;ham,2671,8;carrot,2684,8;meat,2666,8;apple,2674,8;brown mushroom,2789,8;egg,2695,8"/> </parameters> </npc> Creio que terminamos a parte exaustiva do XML, vamos agora a uma parte divertida, a configuração de um NPC via LUA. Programando um NPC via LUA. Eu sempre achei limitada a programação XML de um NPC, já que em LUA, você pode dar certo dinamismo, tornando o NPC mais real. Por exemplo: Você pode criar várias mensagens de boas-vindas, relacionados com o andamento de uma missão, coisa que não pode ser feita em XML. Vamos, então, estudar a programação LUA de um NPC! local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end Acima, consta a base de programação LUA de um NPC. Não entraremos em detalhes agora, mas ela sempre deve constar no arquivo LUA. Vamos agora, criar um exemplo de NPC de missão, Certo, já temos uma base concreta para trabalhar, vamos então passar isso para a programação: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function msgCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end #local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid Você pode observar que adicionei uma função chamada msgCallback, ela funciona da seguinte maneira, quando o jogador falar alguma coisa, o NPC responderá conforme o que o jogador disse, mas isso só acontece se você programar. A linha marcada pelo sustenido (retire o sustenido!), serve para atribuir um valor a variável talkUser, ou seja, ao usuário que o NPC estará falando. A parte interessante é: "Se o sistema é CONVERSATION_DEFAULT, o talkUser sempre terá valor 0, pois, o NPC pode falar com várias pessoas (sistema de NPCs 8.4+), se não ele falará com apenas um pessoa, ou seja, talkUser terá sempre valor cid." Certo, seguindo aquele diálogo passado acima, iremos programar o nosso NPC Tutorial. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function msgCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'ajuda')) then npcHandler:say("Eu estou precisando de 5 peles de lobo para fazer uma vestimenta! Você poderia me ajudar?") talkState[talkUser] = 1 end if(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then npcHandler:say("Oh! Muito Obrigado, estarei esperando pelas peles!", cid) setPlayerStorageValue(cid, 5555, 1) elseif(msgcontains(msg, 'não') and talkState[talkUser] == 1) then npcHandler:say("Oh! É uma pena, iria te recompensar...", cid) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Certo, entraram muitos elementos novos nessa programação, irei explicá-los: Lembra no começo dessa explicação, que eu disse que a programação LUA tem vantagens, pois você pode criar várias mensagens de boas-vindas conforme o andamento de uma missão? Vamos fazer isso, o interessante, é que segue o mesmo exemplo da função msgCallback, porém o callback relacionado será diferente. [spoiler=SPOILER] local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end [spoiler=SPOILER] [font=Tahoma] function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function onGreet(cid)[/font] [font=Tahoma] if(msgcontains(msg, 'oi')) then if(getPlayerStorageValue(cid, 5555) == -1) npcHandler:say("Olá, senhor, estou precisando de {ajuda}", cid) else npcHandler:say("Olá, você trouxe minhas peles?", cid) talkState[talkUser] = 2 end end end function msgCallback(cid, type, msg)[/font] [font=Tahoma] if(not npcHandler:isFocused(cid)) then return false end [/font] [font=Tahoma] local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid [/font] [font=Tahoma] if(msgcontains(msg, 'ajuda')) then npcHandler:say("Eu estou precisando de 5 peles de lobo para fazer uma vestimenta! Você poderia me ajudar?") talkState[talkUser] = 1 end [/font] [font=Tahoma] if(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then npcHandler:say("Oh! Muito Obrigado, estarei esperando pelas peles!", cid) setPlayerStorageValue(cid, 5555, 1) elseif(msgcontains(msg, 'não') and talkState[talkUser] == 1) then npcHandler:say("Oh! É uma pena, iria te recompensar...", cid) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)[/font] [font=Tahoma] npcHandler:setCallback(CALLBACK_GREET, onGreet) npcHandler:addModule(FocusModule:new()) [/font] Prestem atenção na função onGreet, o que ela faz? Primeiro, ela analisa qual o valor do storage do jogador, se ele for menor ou igual a -1, o NPC entenderá que o jogador NUNCA falou com ele. Do contrário, ele entenderá que já deu a missão para o jogador, Certo, digamos, que o jogador tenha as peles e diga sim, no caso, ele deve receber uma recompensa, [spoiler=SPOILER] local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end [spoiler=SPOILER] [font=Tahoma] function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function onGreet(cid)[/font] [font=Tahoma] if(msgcontains(msg, 'oi')) then if(getPlayerStorageValue(cid, 5555) == -1) npcHandler:say("Olá, senhor, estou precisando de {ajuda}", cid) elseif(getPlayerStorageValue(cid, 5555) == 2) npcHandler:say("Você já fez minha missão!", cid) else npcHandler:say("Olá, você trouxe minhas peles?", cid) talkState[talkUser] = 2 end end end function msgCallback(cid, type, msg)[/font] [font=Tahoma] if(not npcHandler:isFocused(cid)) then return false end [/font] [font=Tahoma] local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid [/font] [font=Tahoma] if(msgcontains(msg, 'ajuda')) then npcHandler:say("Eu estou precisando de 5 peles de lobo para fazer uma vestimenta! Você poderia me ajudar?") talkState[talkUser] = 1 end [/font] [font=Tahoma] if(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then npcHandler:say("Oh! Muito Obrigado, estarei esperando pelas peles!", cid) setPlayerStorageValue(cid, 5555, 1) talkState[talkUser] = 0 elseif(msgcontains(msg, 'não') and talkState[talkUser] == 1) then npcHandler:say("Oh! É uma pena, iria te recompensar...", cid) talkState[talkUser] = 0 end [/font] [font=Tahoma] #if(msgcontains(msg, 'sim') and talkState[talkUser] == 2) then if(doPlayerRemoveItem(cid, ID DO ITEM, 5) == true) then npcHandler:say("Muito Obrigado!", cid) doPlayerAddMoney(cid, 50) setPlayerStorageValue(cid, 5555, 2) talkState[talkUser] = 0 else npcHandler:say("Eu não nasci ontem, faltam peles...", cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'não') and talkState[talkUser] == 2) then npcHandler:say("Então vá pegar-las", cid) talkState[talkUser] = 0 end# end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)[/font] [font=Tahoma] npcHandler:setCallback(CALLBACK_GREET, onGreet) npcHandler:addModule(FocusModule:new()) [/font] Estude o bloco marcado com sustenido, é ele que faz a função de conferir se o jogador tem as peles e dar uma recompensa. Lembre-se, LÓGICA CONDICIONAL, Agora, você pode achar estranho, vamos voltar ao XML e ver como ficaria o nosso NPC. [font=Tahoma][size=3] <npc name="Tutorial" script="data/npc/scripts/tutorial.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="128" head="114" body="132" legs="114" feet="115" addons="0"/> <parameters> <parameter key="message_farewell" value="Tchau!"/> <parameter key="message_idletimeout" value="Ei, voce ta ai?"/> <parameter key="message_walkaway" value="mal-educado, me deixou falando!!"/> </parameters> </npc> [/size][/font] Veja que não é necessário, criar um parâmetro para message_greet, pois ela é programada no arquivo LUA. Terminamos. Anexos Considerações Bom, galera. Estou terminando o tutorial por aqui! Meu objetivo com este era ensinar apenas o básico sobre a programação dos NPCs, mas viu o que aconteceu, né? Talvez eu crie um segundo tutorial para mostrar como programar NPCs mais avançados. Abraços!
  30. 1 point
    Elver Maguh

    FME - Funções do Map Editor

    FME (Funções do Map Editor) Introdução Oi, eu sou o Goku, tudo tranquilo? Este guia tem como objetivo explicar e/ou instruir (ah vá) na utilização de Editores de Mapa, suas ferramentas, dicas e afins. Caso esteja procurando a lista de editores de mapa (download) e/ou changelog de suas atualizações, clique aqui. Remeres Map Editor (github.com/hjnilsson/rme) O que é isso? Como o nome sugere, trata-se de um editor de mapas para Open Tibia, que foi (obviamente) criado por Remere. Seu desenvolvimento começou durante o verão de 2007 devido a frustração (dor de cotovelo) de Remere com o único map editor disponível na época, SimOne Map Editor, esse que sequer operava sob sistemas 64bits e era disponível apenas para Windows. Durante os primeiros dias de desenvolvimento, o editor de mapas utilizava um processador de software através do wxWidgets (*) para compatibilidade entre plataformas. No entanto, percebeu-se que esta solução era (uma mer#*) lenta na velocidade de renderização. Mais tarde o editor passou para uma renderização de hardware, utilizando o OpenGL (*) e mais controles avançados foram implementados, entre eles uma ferramenta de seleção muito mais poderosa com a funcionalidade de desfazer e os primeiros estágios do clássico auto-border, permitindo os mappers terem uma experiência mais (preguiçosa) tranquila durante o desenvolvimento. Ferramentas (Tools) (imagem ilustrativa) → Utilizando a Ferramenta de Borda (Border) Resume-se a um Auto-Border manual, colocando bordas automaticamente na área selecionada (utilizando o brush/pincel) → Alternar entre auto-border Habilitado/Desabilitado → (A) → Randomizar todos os pisos/grounds → Edit > Border Options > Randomize Map → Completar automaticamente bordas do mapa → Edit > Border Potions > Borderize Map → Completar automaticamente bordas selecionadas do mapa → Edit > Border Potions > Borderize Selection (CTRL + B) → Utilizando a Ferramenta de Apagar (Erase) Apagará apenas itens/paredes → Pressionando CTRL apagará todos os tipos de itens (incluindo Paredes/Walls, Pisos/Grounds e Itens) → Pressionando SHIFT é possível aumentar o brush size (tamanho da área). Observação: É possível utilizar ambas as hotkeys ao mesmo tempo. → Remover Pisos Especiais (PZ, No-PvP, No-Logout, PvP e House Tiles) Basta pressionar a tecla CTRL, desde que qualquer um dos ground brushs (ferramentas de piso) estejam selecionados. Pincéis (Brush Size) (imagem ilustrativa) Abas (Palette) (imagem ilustrativa) → Terrain Palette (Paleta de Terra) → Caso você utilize o Terrain Palette com o auto-border desligado os pisos/grounds continuarão sendo randomizados automaticamente. → Doodad Palette (Paleta de Objetos Decorativos/Acessórios) →¹: É possível mudar a orientação dos objetos/itens, apertando a tecla X. →²: É possível alternar entre as variações dos objetos/itens antes de coloca-los no mapa, apertando CTRL + espaço. →³: É possível colocar objetos sobrepostos (sobre blocking tiles) mantendo pressionada a tecla ALT. → Item Palette (Paleta de Itens) → House Pallet (Paleta de Configurações de Casas) → Criando/Configurando Casas (imagem ilustrativa) → Waypoint Pallet (Paleta de Atalhos) São atalhos/rotas adicionados no próprio mapa, sendo possível localiza-los através da própria Aba ou in-game com o comando /goto waypoint_name → Creature Pallet (Paleta de Criaturas) → Adicionando NPCs/Criaturas File > Import > Import Monsters/NPCs (imagem ilustrativa) →¹: Caso o mapa tenha criaturas/NPCs que não estejam adicionados ao creatures.xml (referente a versão do cliente [remeres/data]), será pedido que você selecione/carregue os arquivos .xml dos mesmos. → Raw Pallete Resume-se em "itens soltos", id por id, agrupados em maioria no Others. → Hotkeys (Teclas de Atalho) (Atalhos de Abas) (View/Visibilidade) (Zoom) (Tools/Ferramentas) → Dicas Úteis → Ir até determinada coordenada (x, y, z), Edit > Goto Position (CTRL + G) (imagem ilustrativa) → Mudar versão do mapa, Map > Properties > Client Version (CTRL + P) (imagem ilustrativa) → Adicionar/Editar Cidades, Map > Edit Towns (CTRL + T) (imagem ilustrativa) → Aceitar .SPR e .DAT editados File > Preferences > Client Version > desmarque a opção "Check File Signatures" (imagem ilustrativa) → Importando Mapas, File > Import > Import Map (imagem ilustrativa) → Editar Textos/Placas, basta dar um duplo clique ou right click (botão direito) no item → Properties (imagem ilustrativa) → Configurar Teleports, basta dar um duplo clique ou right click (botão direito) no item → Properties (imagem ilustrativa) Última atualização: 16/07/2018
This leaderboard is set to Sao Paulo/GMT-03:00
×