Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Esta é uma mensagem automática! Este tópico foi movido para a área correta.
Pedimos que você leia as regras do fórum.

Spoiler

This is an automated message! This topic has been moved to the correct area.
Please read the forum rules.

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

Participe da conversa

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

Visitante
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

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

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

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por 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 Biel249
      Bom dia. Estou passando por esse problema com meu otserver tibia 8.6 eu coloco online tudo certinho portas abertas dmz e dns configurada mas não fica on só eu consigo entrar. Ja entrei em contato com a fornecedora de Internet eles alegaram que meu ip é privado e só conseguiria pagando um ip público. Alguém me ajuda????
    • Por Naze
      Uns dos problemas das maiorias dos otserv casual que estão online é o autoloot, alguns com erros e defeito na checagem dos containers e sempre consumindo muito por ser em lua fazendo checagens de tile, corpo, itens e etc. Por isso decidi da uma contribuição a essa comunidade que me evoluiu bastante um autoloot diretamente na source na função que insere os itens no corpo, otimizando em 100% na hr da entrega do item, e não tendo problemas ocasionais como corpos sobre corpos ou varias bags.
       
           Esse sistema já é bem comum quando comprado, mas gratuito acredito que ainda não tinha disponível, então fiz esse totalmente do 0 na source tfs 0.4 rev 3999 (do yan).
          
          Atenção na instalação! Qualquer problema pra compilar que envolva as linhas presente no código verifique novamente se instalou corretamente antes de pedir ajuda para evitar flood. Qualquer bug, erro ou mal funcionamento encontrado pode postar que estarei corrigindo, mas não irei customizar a seu agrado, você consegue fazer isso sozinho com atenção e calma, e se precisa de ajuda é só posta as duvidas.
       
      Imagens do Sistema:
       
      Características: 
      -> Otimizado executando apenas funções necessarias -> Comandos simples e praticos -> !autoloot on/off //Autoloot estara sempre ligado, e caso queria desliga use '!autoloot off' -> !autoloot bank/bag //Define para onde ira o dinheiro coletado, direto banco ou no inventario -> !autoloot list //Lista todos itens adicionados para coleta -> !autoloot clear/clean //Remove todos itens da lista -> !autoloot add, name item, name item, ... //Adiciona itens na lista, podendo adicionar quantos quiser de uma vez. Ele retorna um messagem dizendo os itens que foram adicionados e os que deram erro e não foram adicionados, talvez por escrito errado, ja existente na lista, na lista de bloquados, etc. -> !autoloot remove, item name, item name, ... //Remove itens da lista, com a mesma logica do add. -> Opções configuravel pelo Config.lua -> AutoLoot_MoneyIDs //IDs dos Itens Moedas do servidor como gold coins, platinium coins, crystal coins. -> AutoLoot_BlockIDs //IDs dos itens bloqueados para autoloot -> AutoLoot_MaxItem //Quantidade maxima de itens para adicionar a lista -> Sistema livres de bugs ou logs de erros.  
      Instalação:
      Toda instalação será feita na source, exceto por 1 linha em talkactions.xml e 3 variáveis no config.lua
       
      TFS 0.4 :
       
      Link para Otx -> https://tibiaking.com/forums/topic/101086-otimizado-autoloot-in-sources-for-otx2-ou-menor/
       
      Nas versões atual da TFS para servidores 10+ não ira funcionar pois algumas funções são diferente e não irei corrigir agora, em breve passo o mesmo pra tfs 1.x e otx3.
       
      Esse sistema foi totalmente feito por mim, mas dou créditos também ao @Mathias Kenfi por me ajudar muito na evolução em lua/c++ e a tabela sql é a mesma usada no quick autoloot 1.3 postado por Pedriinz
       
      @Edit: 
      Quem usa source de derivados caso ocorra erro aplica as alterações dos comentários abaixo.
      Pequena correção em talkactions.cpp na parte remove na linha if(!player->checkAutoLoot(itemId)), para if(player->checkAutoLoot(itemId))
    • Por DeathRocks
      Então é o seguinte queria alguem poderia fazer este script dos Mini Games
       
      Funciona Assim:
      O jogador ao entrar no jogo ele controla 1 arco gigante e tem como objetivo acertar o alvo que é 1 passáro que fica se movendo loucamente pela area, o tempo é de 60 segundos, o objetivo é acertar o maximo de vezes que você conseguir o passáro, quanto maior o numero de acerto, melhor vai ser a recompensa, e haverá um rank para esse mini game, aonde você pode ver quem acertou mais vezes no servidor.
      Imagem Da Sala:

      Espero que tenha Entendido...
      No Aguardo - +REP
    • Por Cat
      1 - Downloads Necessários:
      - Visual Studio 2019 Community: 
      https://visualstudio.microsoft.com/pt-br/thank-you-downloading-visual-studio/?sku=Community&rel=16
      - Microsoft Visual C++ 2015-2019 Redistributable: 
      (32-bit download, 64-bit download)
      - Git: 
      https://git-scm.com/download/win
       
       
      2 - Visual Studio 2019:
      - Na tela inicial do Visual Studio, no produto Visual Studio Community 2019 clique no botão Instalar.
      - Na próxima tela, selecione Desenvolvimento para Desktop com C++.
      - Na mesma tela em Detalhes da Instalação, selecione:
       
       
       
      - Depois em Pacotes de Idiomas, selecione:
       
       
       
      3 - Instale os softwares necessários:
      - Instale o Git:
       
       
      4 - VCPKG:
      - Utilize o Prompt de Comando ou Windows Powershell no diretório C:
      Prompt de Comando: cd C:\
      Windows Powershell: cd C:\
      - Para fazer a instalação completa do VCPKG, execute os comandos abaixo no Prompt de Comando ou Windows Powershell:
       
      5 - Sources OTServBR-Global:
      - Faça o download das sources do OTServBR-Global com o comando abaixo no Prompt de Comando ou Windows Powershell.
       
      6 - Instalação das bibliotecas VCPKG:
      - Escolha um dos conjuntos de bibliotecas abaixo de acordo com o seu sistema operacional.
      - Execute o comando com o Prompt de Comando ou Windows Powershell.
       
      - Para compilação em 64-bit:
      .\vcpkg install --triplet x64-windows boost-asio boost-filesystem boost-iostreams boost-lockfree boost-system boost-variant cryptopp libmariadb luajit mpir pugixml - Para compilação em 32-bit:
      .\vcpkg install boost-asio boost-filesystem boost-iostreams boost-lockfree boost-system boost-variant cryptopp libmariadb luajit mpir pugixml  
      - Após a escolha e a instalação de um dos conjuntos de bibliotecas, utilize o comando abaixo para integrar a instalação ao Visual Studio:
      .\vcpkg integrate install  
       
      7 - Compilando as Sources do OTServBR-Global:
      - Encontre o diretório vc14 do OTServBR-Global (C:\vcpkg\otservbr-global\vc14) e abra o arquivo otservbr-global.vcxproj. Isso irá abrir o Visual Studio e você estará apto a compilar as sources.
      - 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.
       
      7.1 - Observação:
      - Se o seu processador é antigo para melhor otimização, compile o servidor com a instrução abaixo:
      - No Visual Studio, edite as propriedades do projeto e troque 'Enhanced Instruction Set' para 'SSE2'.
       
       
       
      8 - DLL's Necessárias:
      Para compilação em 64-bit:
      - Copie as DLLs da pasta (C:\vcpkg\otservbr-global\vc14\x64\Release).
      - Copie o executável da pasta (C:\vcpkg\otservbr-global\vc14\x64\Release).
      - E cole na pasta raiz do servidor.
      Obs: a pasta do servidor pode ser salva em outro diretório de sua preferência e que tenha permissão para os arquivos.
       
      Para compilação em 32-bit:
      - Copie as DLLs da pasta (C:\vcpkg\otservbr-global\vc14\Release).
      - Copie o executável da pasta (C:\vcpkg\otservbr-global\vc14\Release). - E cole na pasta raiz do servidor.   Obs: a pasta do servidor pode ser salva em outro diretório de sua preferência e que tenha permissão para os arquivos.   9 - Abrindo o Servidor:
      - Para abrir o servidor OTServBR-Global, siga 1 (uma) das opções abaixo:
      [MySQL] OTServBR-Global + XAMPP + MyAAC:
       
      [MySQL] OTServBR-Global + Uniform Server + MyAAC:
       
      [MySQL] OTServBR-Global + Uniform Server + GesiorAAC2012:
       
      [MySQL] OTServBR-Global + Uniform Server + ZnoteAAC:
       
       
       
      10 - Créditos:
      Desenvolvedores TFS: https://github.com/otland/forgottenserver/wiki/Compiling-on-Windows-(vcpkg)
      Majesty (Tutorial de compilação do OTServBR-Global no VS2019)
      Microsoft - VCPKG: https://github.com/Microsoft/vcpkg
       
       
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo