Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 01/10/21 em todas áreas

  1. [NPC] Daily Task com 4 opções diarias.

    tvieira reagiu a Mor3nao por uma resposta no tópico

    1 ponto
    Introdução: Eu estava procurando um sistema de tasks diarias funcional, achei alguns, mas nenhum do jeito que eu queria, então eu fiz esse. Ele tá bem simples, porém funcional, aí vou postar uma "melhoria" dele e linkar AQUI << tá linkado, dá uma olhada lá ? Como funciona? Bom, eu me baseei no sistema de tasks do PxG onde você pode escolher entre tasks de diferentes niveis/dificuldades, no caso, este é possivel que vc escolha entre 4 opções, sendo elas de nivel "easy", "medium", "hard" e "expert", e tem até o server save para entregar. Como prêmios, coloquei: Quantidade aleatoria de XP, Quantidade fixa de um Item fixo e quantidade aleatoria de um(ou mais) item aleatorio. Como "instalar" o script: 1.1 Vá até /data/npc e crie o arquivo daily.xml, abra-o e coloque tudo isso lá dentro: 1.2 Vá até /data/npc/scripts e adicione o arquivo dailyTask.lua, e dentro dele coloque: 2.1 Em /data/lib/lib.lua, acrescente a linha: dofile('data/lib/task/dailytask.lua') 2.2 Crie o arquivo dailytask.lua em /data/lib/task/, e dentro coloque: 3.1 Em /data/creaturescript/creaturescripts.xml adicione a tag: <event type="kill" name="dailyTasks" script="dailyTasks.lua"/> 3.2 Registre o "dailyTasks" no seu login.lua 3.3 Crie o arquivo dailyTasks.lua em /data/creaturescript/scripts e coloque tudo isso dentro: Configurando o Script: Essas configurações estão no: /data/lib/task/dailytasks.lua Imagens de amostra: Escolhendo as tasks(A da direita é antes de save, e a da esquerda depois). Server Log contando quantos monstros foram mortos. Na bp normal os premios da primeira vez que eu fiz, na azul os premios da segunda (só pra mostrar que é aleatorio, um player não pode repetir a task)
  2. 1 ponto
    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
  3. Zombie Event [DIFERENCIADO]

    Leandro Vidal Martins reagiu a WooX por uma resposta no tópico

    1 ponto
    Zombie Event Zombie Event é um evento já muito conhecido em que os participantes são jogados em uma arena e zombies são invocados até que reste apenas um jogador, quando um jogador é tocado por um zombie ele é teleportado para o templo, o ultimo jogador a ficar na arena é definido como vencedor e o evento é finalizado ai. Já faz um bom tempo que tive a ideia de mudar o funcionamento deste tradicional evento e finalmente decidi por a mão na massa, irei explicar melhor o que foi alterado abaixo. Sobre o sistema O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4 Pra quem quiser esse evento funcional para TFS 1.x, o @Movie se comprometeu a fazer a adaptação, então podem mandar mensagem privada pra ele cobrando que ele gosta. Quem é familiar com filmes e séries de zombies sabe que quando um zombie morde alguém a pessoa que foi mordida não simplesmente morre, mas ela se torna um zombie, é isso que torna a ideia de um apocalipse zombie tão aterrorizante. Pensando nisso eu tive a ideia de alterar o sistema pra que quando algum player fosse pego por um zombie ele também se transformasse em um e não fosse simplesmente teleportado para o templo. Essa alteração deixa a interação entre os jogadores no evento mais dinâmica pois eventualmente se torna um jogo de Player vs Player ao invés de Player vs Maquina, embora no fim continue sendo uma batalha entre vivos e mortos. Irei listar abaixo mais algumas características do evento. É possivel configurar para que seja permitido ou não o uso de MCs. Todos os jogadores ao entrar na arena ficam com a mesma velocidade. Para tornar mais competitivo e divertido, não é permitido utilizar a função Follow dentro do evento. O jogador que foi transformado em zombie que mais contaminar outros jogadores também recebe uma recompensa. Os jogadores que forem transformados em zombies podem subir de rank conforme forem contaminando outros jogadores, alterando assim sua aparência e velocidade na arena. Vídeozinho Instalação Este sistema utiliza de funções contidas na lib do link abaixo, então antes de mais nada é necessário adicionar esta lib no servidor. Todos os arquivos necessários para instalação do evento estão anexados no tópico, irei apenas mostrar como deve ser configurado. Toda configuração do sistema se encontra na lib do mesmo, segue abaixo explicação de como configurar. startTime: configuração de horários para inicio do evento a depender do dia da semana (para cada horário diferente definido aqui um registro extra é necessário no globalevents.xml) announcement: mensagem a ser exibida quando o teleporte para o evento for aberto. startEvent: mensagem a ser exibida quando o teleporte para o evento for fechado e o evento iniciado. playerBitten: mensagem a ser exibida quando um jogador for mordido por um zombie. endEvent: mensagem a ser exibida quando o evento for finalizado. notEnoughPlayers: mensagem a ser exibida quando não houver players suficiente para o evento. zombiesRant: falas que serão randomicamente selecionadas para um jogador que foi transformado em zombie falar. minOnlinePlayers: define a quantidade minima de jogadores online para o teleporte do evento ser aberto. minPlayers: define a quantidade minima de jogadores na arena para o evento ser iniciado. closeTeleportTime: tempo para fechar o teleporte após o anuncio (o valor deve ser definido em minutos). countDownTime: tempo para iniciar o evento após o fechamento do teleporte (o valor deve ser definido em segundos). zombieRatio: define a quantidade inicial de zombies baseado na quantidade de jogadores participando do evento. playerSpeed: define a velocidade que o jogador terá durante o evento (valido apenas para jogadores que não foram transformados em zombies). delayToTransform: define o intervalo para um jogador que foi mordido se transformar em um zombie (o valor deve ser definido em segundos). allowMultiClient: pode ser definido como true ou false, se definido como falso não irá permitir a entrada de jogadores com o mesmo IP no evento. rewards: define as recompensas a serem entregues tanto para o ultimo sobrevivente na arena como para o zombie que mais contaminar outros jogadores. zombiesRank: define os ranks dos zombies, a quantidade de pontos necessária para avançar de rank, aparência e velocidade (valido apenas para jogadores que foram transformados em zombies). area: define a área onde ocorrerá o evento, deve ser preenchido as coordenadas do ponto superior-esquerdo, ponto inferior-direito e o andar do local. teleportAid: define a actionID a ser adicionado no teleporte de entrada do evento (este valor deve ser o mesmo a ser registrado na tag XML do script de movements). teleportPos: define as coordenadas onde deve ser criado o teleporte de entrada para o evento. Créditos @LeandroRissa por testar todo o sistema. event zombie.xml lib_zombie.lua zombieEvent.lua zombieEvent_creature.lua zombieEvent_movement.lua
  4. Hati New AAC

    Joaogabriel reagiu a Pedro. por uma resposta no tópico

    1 ponto
    estou dando uma pausa no projeto por um momento, só tenho tempo finais de semana, trabalho tá me sugando e no momento vou ter que da um gás nos finais de semana também, mas logo volto! tava finalizando o fórum! pega la vision! ateagoraehisso.mp4
  5. Hati New AAC

    Joaogabriel reagiu a Pedro. por uma resposta no tópico

    1 ponto
    Neste mês irei trabalhar um pouco no layout do aac, com isso irei começar a limpar o css e usar componente estilizado, é como secar gelo, e irei me concentrar mais nas funções. responsive.mp4
  6. 1 ponto
    Olá, esse é um dos primeiros scripts que eu consigo fazer, resolvi trazer ao fórum pois talvez em algum momento da história isso sirva para alguém fazer alguma coisa. Eu também gostaria de ceder todos os créditos desse trabalho para o @WooX, pois sem ele eu não teria o conhecimento necessário para fazer o script funcionar, obrigado. local configuration = { positionParedinso1 = {x=1067, y=1071, z=7, stackpos=1}, -- Posição do objeto que ira sumir time = 1*15*1000, -- tempo para o objeto voltar para o seu lugar devido monstrosTime = 1*10*1000, -- tempo até os monstros despertarem guardioes = { [1] = {name = "Hellfire Fighter", pos = {x = 1065, y = 1071, z = 7}}, -- Todas posições onde os monstros seram criados [2] = {name = "Massive Fire Elemental", pos = {x = 1061, y = 1069, z = 7}}, -- Bem como seus nomes e quantidade [3] = {name = "Fury", pos = {x = 1069, y = 1074, z = 7}}, [4] = {name = "Demon", pos = {x = 1069, y = 1071, z = 7}}, [5] = {name = "Diabolic Imp", pos = {x = 1066, y = 1074, z = 7}}, [6] = {name = "Fire Devil", pos = {x = 1064, y = 1075, z = 7}}, [7] = {name = "Fire Elemental", pos = {x = 1062, y = 1069, z = 7}}, [8] = {name = "Massive Fire Elemental", pos = {x = 1067, y = 1068, z = 7}} } } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1945 then -- alavanca doTransformItem(item.uid, 1946) positionParedinso = getThingFromPos(configuration.positionParedinso1) if positionParedinso.itemid ~= 0 then doRemoveItem(positionParedinso.uid, 1) doCreatureSay(cid, "Um som terrível de engrenagens antigas se movendo pode ser ouvido imediatamente após você puxar a alavanca. \z Estrondos, chamas e vozes demoniacas estão vindo na sua direção, são ouvidos cada vez mais altos, corra por sua vida, \z você acaba fezer um mal antigo despertar.", TALKTYPE_ORANGE_1) -- Mensagem que será exibida após você puxar a alavanca addEvent(function() for k, v in pairs(configuration.guardioes) do doCreateMonster(v.name, v.pos) end end, configuration.monstrosTime) addEvent(doCreateItem, configuration.time, 12794, configuration.positionParedinso1) -- "12794" é o ID da parede que você quer criar após puxar a alavanca end else doTransformItem(item.uid, 1945) end end
  7. Ajuda em Gesior

    Seitron reagiu a Pedro. por uma resposta no tópico

    1 ponto
    cria um arquivo monsters.php em pages e adiciona lá dentro obs: não esquecer de trocar o diretorio do seu servidor dentro do php $otdir = '/home/otserv/'; <?php ###### AUTHOR: Colandus ###### Adaptado: Yinz $otdir = '/home/otserv/'; // In percent (highest first). $rarity = array( 'Not Rare' => 7, 'Semi Rare' => 2, 'Rare' => 0.5, 'Very Rare' => 0 ); ?> <html> <head> <title>Colandus' Monster Loot Checker 1.5</title> </head> <script language="javascript"> function toggleVisibility(obj) { var el = document.getElementById('d' + obj.id); var name = obj.innerHTML.substring(4); if(el.style.display == 'none') { obj.innerHTML = '[ -]'; el.style.display = 'block'; } else { obj.innerHTML = '[+]'; el.style.display = 'none'; } obj.innerHTML += ' ' + name; } </script> <style type="text/css"> a { color:red; font: bold 13px verdana; text-decoration: none; } a:hover { text-decoration: underline; } </style> <?php if(isset($_GET['lootrate'])) $add = '?subtopic=monsters'; echo '<a href="' . $_SERVER['PHP_SELF'] . ($add ? '?subtopic=monsters' : '') . '">Hide None</a> | '; echo '<a href="?subtopic=monsters&hidefail' . $add . '">Hide Not Found</a> | '; echo '<a href="?subtopic=monsters&hideempty' . $add . '">Hide Monsters Without Loot</a> |'; echo '<a href="?subtopic=monsters&hideempty&hidefail' . $add . '">Hide All</a>'; ?> <br /><br /> <br /><br /> <?php $items = simplexml_load_file($otdir . '/data/items/items.xml') or die('<b>Could not load items!</b>'); foreach($items->item as $v) $itemList[(int)$v['id']] = $v['name']; if(isset($_GET['lootrate'])) { $config = parse_ini_file($otdir . '/config.lua'); $lootRate = $config['rateLoot']; } $monsters = simplexml_load_file($otdir . '/data/monster/monsters.xml') or die('<b>Could not load monsters!</b>'); foreach($monsters->monster as $monster) { $loot = simplexml_load_file($otdir . '/data/monster/' . $monster['file']); if($loot) { if($item = $loot->loot->item) { echo ' <a id="' . ++$i . '" style="text-decoration: none; font: bold 14px verdana; color: orange;" href="javascript:void(0);" onclick="toggleVisibility(this)">[+] ' . $monster['name'] . '</a> <br /><div style="display: none;" id="d' . $i . '"> <pre>>>> <b><u>' . $otdir . '/' . $monster['file'] . '</u></b><br /><br />'; addLoot($item); echo '</pre></div>'; } elseif(!isset($_GET['hideempty'])) echo '<span style="font: bold 14px verdana; color: red;">[x] ' . $monster['name'] . '</span><br />'; } elseif(!isset($_GET['hidefail'])) echo '<span style="color: white;">Failed to load monster <b>' . $monster[name] . '</b> <i>(' . $monster[file] . ')</i><br />'; } function addLoot($loot, $level=1) { foreach($loot as $test) { $chance = $test['chance']; if(!$chance) $chance = $test['chance1']; printLoot($level, $test['id'], $test['countmax'], $chance); foreach($test as $k => $v) addLoot($v->item, $level + 1); } } function printLoot($level, $itemid, $count, $chance) { global $itemList, $rarity; $chance /= 1000; if(isset($_GET['lootrate'])) { global $lootRate; $chance *= $lootRate; } foreach($rarity as $lootRarity => $percent){ if($chance >= $percent) { echo str_repeat("... ", $level) . '<u>' . ($count ? $count : 1) . '</u> <span style="color: #7878FF; font-weight: bold;">' . $itemList[(int)$itemid] . '</span> ' . $itemid . ' <span style="color: #C45; font-weight: bold;">' . $lootRarity . '</span> (<span style="color: #FF9A9A;">' . $chance . '%</span>)<br />'; break; } } } ?> <br /><p style="font: bold 24px georgia;">By Colandus</p> </body> </html> adicionei em library, mas você pode mudar. em layouts/tibiacom/layouts.php da um ctrl + f e procura library <a href="?subtopic=monsters"> <div id="submenu_monters" class="Submenuitem" onmouseover="MouseOverSubmenuItem(this)" onmouseout="MouseOutSubmenuItem(this)"> <div class="LeftChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div> <div id="ActiveSubmenuItemIcon_monters" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div> <div id="ActiveSubmenuItemLabel_monters" class="SubmenuitemLabel"><font color=red>Monsters</font></div> <div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div> </div> </a>
  8. DITTO E SHINY DITTO MEMORY !

    DarkRed reagiu a vini3h por uma resposta no tópico

    1 ponto
    Fala galera beleza ? criei este tópico para ajudar alguns que tem shiny ditto , e ditto , e usam a memory sistem por talkations , mas não sabem colocar no shiny ditto ! Espero que gostem Canal : Vini3h Em data / Talkations / scripts Criem 1 arquivo com o nome de dittomemory.lua (Caso não tenha) , e coloque isto dentro : Agora vá em : Data/Talkactions/Talkactions.xml E adicione está linha : OBS : /memory ; /memory check ; /memory save ; /memory forget São os comandos dele !!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo