Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 11/09/23 em todas áreas

  1. Projeto PokeBR

    Bruno Maciell reagiu a Pesadelo277 por uma resposta no tópico

    1 ponto
    Ola Pessoal do Tibia King Eu Peguei uma base de Poketibia bem antiga, então eu decidi fazer um projeto sério de pokemon, logo abaixo eu deixarei umas print screen , por enquanto vamos falar o que tem no server. BaseUsada:PGalaxy Informações: •Adicionado pokemons da 3ª Geração (nao esta completa)•Server com System de level !.•Clan System (PDA Slicer).•Alguns bugs corrigidos.•Pokemons das gerações: 1 - 2 - 3 - 1 shiny - 3 shiny ----•Sprites Reformuladas•Client Extendido•Bike System•Npc De itens de task de clãns.•Adicionada Area VIP•Shinys Espalhado pelo mapa.•Adicionada 2 Cidades do continente Hoen, e mais uma cidade na vip (se consegue acesso a Hoenn atravez de Cinnabar [barco])•Adicionadas Varias quest•Duel System.•Golden arena.•Moves system (m1 a m12).•Maximo 6 pokemons na bag.•Order 100%. •Foi dado uma Balanceada na força e na vida dos pokes. •Attacks dos pokemon iguais do Otpokemon bom pelomenos a maioria esta com novos attacks. •Bug da Master Ball corrigida captura qual quer pokemon. •Agora da para vc dar Boost no Pokemon ate o 100. Erros do Servidor: Bom por enquanto nem um que eu saiba. Prints: Downloads: https://www.mediafire.com/file/m08cab371gb9ycu/Poke_BR.rar/file Poke BR.rar Créditos: •Aos criadores do PDA •Slicer •E eu
  2. Open Source MMORPG emulador de Tibia escrito em C++. Baseado no TFS 1.3 e Otx3.2 Otg Server é uma Datapack limpa sem mapa / scripts do tibia global, Base ideal pra quem gosta de customizar Loga no clientes: 1100, Otcv8, Otc Menah e 12.40  Informações: - MAPA TFS Clean - Imbuements - Prey - Reward Daily - Boosted Creature - Auto Loot - Store Imagens :  Downloads Servidor + Database + Source: »» PROJETO OFFICIAL: https://github.com/otg-br/otg-server GRUPO WHATSAPP OTG SERVER: https://chat.whatsapp.com/EWV3dVvS6nt1em7q23FGu7 Créditos : The Forgotten Server Otg contribuidores Johncore Erick Nunes Mattyx Matheus Roberto Cjaker Leu Marson Schneider Rafhael Oliveira
  3. Olá Tibianos. Hoje após um looooongo tempo sem tempo e animo pra mexer em server etc etc. Venho trazer a vós um servidor do @Igorzerah que foi vendido à mim, e foi feito inúmeras modificações também. Sem mais enrolação... O que você irá encontrar no servidor? Sistema de Montaria (desativado) pelo comando "!mount" (dá pra comprar no site) Sistema de Daily Monster (toda vez que abre a distro um monstro é selecionado *também configurável) Sistema de Castle48/24HRS (exatamente as 21:00H o castle 48h abre todos os dias, já o castle 24h é sempre aberto a invasões e tem monstros específicos lá) Sistema de Cast Arrows / Spy System (spy é um cast para admins que mesmo sem estar ativado ele consegue ver *usado para monitorar players) Sistema de EXP FOOD / EGGS (dá pra usar simultâneos ovos de EXP, assim aumentando *ex: 100% + 200% + 300% etc etc) Sistema de Anti Divulgação (Anti divulgação modificado, intruso parece que está divulgando mas não está, tipo um fakechat...) Sistema de Roleta (uma roleta que pode dar itens temporarios *itens hyper) Sistema de Mineração (sistema básico que dá pepitas de ouro *usado no lugar do money para comprar coisas) Várias Cidades (Baiak City, Nether, Oramond e Roshamuul) Boss Gaz'Haragoth e Boss CLAPTOMANIACO (um por boss token e outro por horário) Fast Respawn (quanto mais jogadores online mais rápido é o spawn) esse é o resumo do servidor, eu trabalhei mudando a maioria das coisas e tirando vários bugs, mas, o @nettonnwk vendeu o servidor e me desanimou agora eu estou disponibilizando, já que também teve trabalho meu aqui ? um monte de bug foi resolvido, mas ainda pode ter mais (falta de foco por minha parte dhasudhsa) *algumas imagens do servidor: Link Download Baiak Hyper https://www.mediafire.com/file/p9hdkethf6hjrbr/baiakhyper.zip/file Link Scan Servidor Baiak Hyper https://www.virustotal.com/gui/file/2993b94b808c8c5a98eca8139bd4ab4745ea482e603b847e02464e16458382b5?nocache=1 Client 8.60 Extendido Hyper https://www.mediafire.com/file/l7mkxe4zmb2nlzv/Starlix+8.60.zip/file Link Scan Client 8.60 https://www.virustotal.com/gui/file/11a9444677731e0f2620ce75a159b84aad21ceed472ca68f0da10ee41b8283be Client 8.60 Mobile Hyper https://www.mediafire.com/file/3vvqy78h5b5ccpr/starlix-mobile.apk/file Link Scan Mobile 8.60 https://www.virustotal.com/gui/file/3ec7b021990501eacf208452296025b7b3e02a5c1c8a27e012dc77b06132c6c1?nocache=1 Otclient v8 Hyper https://www.mediafire.com/file/ao7mbah1odhm4mk/Otclient-Starlix.zip/file Link Scan Otclient V8 https://www.virustotal.com/gui/file/b703dac28286dd6139b2f140516b6dfe9882a288b2909817d1570692e73e3c04?nocache=1 Source OTX 2.15 (Modificada por mim e feita algumas alterações..; darei suporte mas... be patienty;) https://www.mediafire.com/file/vacu76zusyk4ubr/king.rar/file scan: https://www.virustotal.com/gui/file/2a5cbca6a6acc028c9809448151836e68250f49abbc7e804a696e2a7eb1dac6f?nocache=1 Atualização: Site: https://drive.google.com/file/d/1zCZAVvacHInGpUOWc82hrsPDGpZ2ro8l/view?usp=share_link Scan Site: https://www.virustotal.com/gui/url/dc2516f12b7f1bb6e3a265fd6a67a4f200fef3664c1ac3d2554203d78690dfb0?nocache=1 Imagem do Site: apesar da maioria das coisas serem feitas por várias pessoas, o site os créditos de alterações é todo meu (já a base é crédito totalmente ao gesior ) db compativel com o site: baiak.sql descrição quando estava sendo vendido* ⭐️ SERVIDOR 8.60 COM RESETS, MONTARIAS E GOLDEN OUTFIT ⭐️ INFORMAÇÕES BÁSICAS DO SERVIDOR: [+] MAPA BAIAK [+] HIGH EXP [+] RESETS COM + DAMAGE [+] PROTEÇÃO DE BAN DO OTSERVLIST [+] ANTI-LAG DE TALKACTION [+] DISTRO OTIMIZADA [+] SOURCE PRONTA PARA WINDOWS/LINUX [+] SITE ATUAL E CONFIGURADO [+] CLIENTE PRÓPRIO + DB LIMPA ? SISTEMAS ATUAIS ? [+] AUTOLOOT AUTOMÁTICO [+] CITY DONATE [+] ROSHAMUUL, ORAMOND E NETHER [+] MONTARIAS E GOLDEN OUTFIT [+] INVASÃO DE MONSTROS AUTOMÁTICAS [+] DAILY MONSTER QUE APARECE AO LOGAR [+] MONTARIAS COM COMANDO !MOUNT [+] SISTEMA DE ROLETA ATUAL [+] CAST WATCH [+] FAST ATTACK [+] CAST ARROWS [+] PUSH CRUZADO [+] REWARD CHEST [+] WARSQUARE [+] COMBO EXP DE POTIONS [+] MINERAÇÃO COM LOJA [+] SISTEMA DE BOSS [+] CRITICAL/DODGE [500/500] [+] LIFE E MANA EM PORCENTAGEM* [+] VARIAS QUESTS ? EVENTOS ? [+] EVENTO DTT (AUTOMÁTICO) [+] EVENTO BATLEFIELD (AUTOMÁTICO) [+] EVENTO SNOWBALLWAR (AUTOMÁTICO) [+] EVENTO DESERT WAR (AUTOMÁTICO) [+] EVENTO ZOMBIE (AUTOMÁTICO) [+] EVENTO CAMPO MINADO (AUTOMÁTICO) [+] EVENTO TEAM BATLE (AUTOMÁTICO) [+] EVENTO CAPTURE THE FLAG (AUTOMÁTICO) see ya l8 guys. créditos em modificações do servidor ( @Lyu, @Diiego Liima, eu, @nettonnwk e o @Igorzerah) Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.
  4. 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.
  5. [OTX 2.x / 8.60] - OTSERVER

    Esdeathkill reagiu a FeeTads por uma resposta no tópico

    1 ponto
    Opa rapaziadaa beleza? Hoje estou disponibilizando uma source OTX 2, baseada na otx 2.x do mattyx - aqui, essa source que estou disponibilizando é um pouco diferente, com algumas features a mais do que a OTX padrão, como muitos sabem, a OTX serve apenas para abrir o seu OT, essa estou disponibilizando com algumas features, onde disponibilizei até scripts do TK, ou usando scripts do TK, tais como o autoloot na source do Naze, o projeto é pra Otserv 8.60. Está sendo desenvolvido no github (projeto github) onde posto atualizações diárias do datapack e source. Vocês podem postar dúvidas, erros/bugs, dicas e qualquer outra coisa aqui no tópico ou no próprio github. Lembre-se de dar FOLLOW no projeto no github e SEGUIR o projeto aqui no fórum para acompanhar as atualizações. Edit: MatheusJP2 Adicionado como contribuidor, ajudando a estender pra source custom LINK: https://github.com/FeTads/otxserver/tree/custom Essa Tree será pra implementar sistemas pra custom tibia / derivados, como sistema de aura, shaders, etc.. voltado para a modificação para OTC. Edit systems Added: Max Absorb All: (protect SSA + Might Ring, você coloca o máximo de protect all que pode ser atingido, caso o player passe disso é ignorado, o maximo de protect vai ser o que está no config.lua) Commit max absorb all edit: fixed all system Delete Players With Monster Name: Deleta o player com nome de monstro, ou com nome proibido (alteravel pelo config.lua), caso vc deixe "deletePlayersWithMonsterName = false", irá apenas renomear o player aleatóriamente sem deleta-lo, ele não conseguirá logar com nome de monstro ou nome proibido. ps: Esse script pega o monster.xml todo, então mesmo que você adicione novos monstros, não precisar mexer em nada, ele ja vai pegar o novo monstro, mesmo sem precisar derrubar o Ot etc.. deletePlayersWithMonsterName = true forbiddenNames = "gm;adm;cm;support;god;tutor;god ; god; adm;adm ; gm;gm ; cm;cm ;" --// other names here edit: 30/10 modifyDamageInK = true (essa função ativada irá modificar a saida do dano pra K, por exemplo 219000 > 219.0K / 2.000.000 > 2.00 KK). modifyExperienceInK = true (esas função também mudará a saida normal pra K, isso é bom em high EXP pra arrumar aquela exp "-2147483647", de muita EXP, irá mudar pra "+2.14 Bi Exp"). 17/01 Last Changes: displayBroadcastLog = true - Desabilita os logs de broadcast do server na distro, aqueles logs de eventos etc... deixa a distro mais limpa. (by kizuno18) enableCriticalAndDodgeSource = true - (Sistema de Dodge E Critical de StatsChange pra source, deixa mais clean, mais leve, e o sistema pega em monstros, sem a necessidade de registrar o evento, previne bugs.) pushInProtectZone = false - Sistema para desabilitar o push de player em PZ, impossibilitando que players empurrem outros players dentro do PZ. SpyCast: Sistema de SPY, pra GM+ ver a tela dos jogadores, como se eles estivessem de cast aberto, GM spy não mostra aviso nenhum que vc está monitorando o player, (sistema de telescope, se o player clicar no item com actionId configurado, mostra os players com cast on), Para GM+ mostra todos os players logados, independente se estão de cast on, para players mostra somente players com cast on. SendProgressbar: Sistema para feature do OTC, necessário saber usar e compilar o otcv8 com a modificação SetCreatureSpeed: Sistema usado pra setar a quantidade exata de speed de alguma criatura/player, usado no sistema de roleta (ainda não disponivel do datapack). (Projeto github) Informações: º 8.60 º Baseado na OTX 2.x mattyx º Lib global (sistema pesadex) º Informações / changelog Dúvidas, erros, dicas e contribuições: Caso tenha dúvidas, ou queira resolver algum bug/erro, dar dicas para o projeto, ou também ajudar em sua construção, crie um issue / pull requests pelo github ou use esse tópico. Créditos: FeTads (FeeTads#0246) mattyx (source base e datapack) Reason182 (fixes e mais) Luxx (meu sócio de servidor, ajudou com teste) Daniel (spriter e dev junior) ADM Mario (cara brabo dos mapas e testes, achador de bug profissional) Luan Luciano (cara brabo que no inicio me ajudou d++) MatheusJP2 (Editor e contribuidor com implementações pra Tree custom source) Download: O download pode ser feito diretamente no github, ou clonando o projeto via git. How Compile: Windows Tutorial - Linux(Ubuntu) Tutorial Sistemas adicionado até o momento, todos 100% e sem bug.
  6. GRAND LINE ADVENTURES É BASE TIBIA?

    ninguem11 reagiu a boxxer321 por uma resposta no tópico

    1 ponto
    é base tibia.
  7. 1 ponto
    Obrigado por espalhar a palavra do canary @luanluciano93, lembro quando você chegou no projeto e ainda tinha algumas ressalvas se deveria usar ou não, que bom que conseguimos trazer você pro lado amarelo da força. Muita gente daqui do TK me conhece e o canary vem na verdade de uma ideia que tive anos atrás depois do fim do projeto BlackOnix (lá em 2008) que era juntar as pessoas + incríveis da comunidade pra fazer um servidor fodástico e completo que seria público. A ideia de ter um produto incrivelmente bom seria avançar o desenvolvimento, unificar esforços e ter uma base comum que fosse atrativa pra qualquer um desenvolver em cima e contribuir de volta. Quando eu conheci o pessoal da OTBR e vi que eles já estavam realizando essa ideia, foi um match instantâneo e estou acompanhando o projeto desde então. Eu cheguei a fazer umas contribuições pontuais e até trazer várias correções e melhorias do meu projeto pessoal, o Empire, pra esse futuro que nós acreditávamos. Infelizmente levou mais de 15 anos pra eu ver uma iniciativa do tipo aqui na comunidade isso me venceu pelo cansaço, hoje em dia eu diria que estou mais pra eu "conselheiro" que dá um apoio moral e suporte de forma pontual já que não estou mais envolvido de forma ativa na comunidade e nem tenho mais servidor. Vale ressaltar que mesmo sob intenso hate e racismo (sobretudo de algumas pessoas da otland), a galera da otbr continua fazendo um trampo SEM PALAVRAS. Usem, divulguem e defendam! O canary é top e é brasileiro. É a melhor base e de longe o projeto que mais continua evoluindo o cenário do open tibia. O pessoal por trás desse projeto é sensacional e muito focado em evoluir o projeto com muito carinho e cuidado, eles merecem ser sempre citados: Eduardo Dantas, Lucas Grossi, Renato "Foot", "Majesty", Luan "Ardent" (cfcluan), "Beats", Murilo, "Marcosvf132" e Renato "Mehah" são alguns dos maiores contribuidores.
  8. Bom pessoal eu resolvi compartilhar o meu sistema de torneio para poketibia que fiz para meu projeto, ele tem a função de ocorrer 4 vezes ao dia....Falando apenas com o 1 NPC Nick da cidade aonde você por.... Como funciona ? Mata todos e o ultimo que sobrar na arena de batalha é o ganhador! 1° Pasta LIB copie um arquivo e deverá renomear para torneio ficando torneio.lua apaga tudo que tem dentro e add torneio = { awardTournament = 2148, ---moeda usada para entra no torneio-- awardAmount = 1000, -- quantidade de moeda que o player vai ganhar ao vencer o torneio-- playerTemple = {x = 893, y = 499, z = 15}, --pra onde vai o player quando morrer ?-- tournamentFight = {x = 894, y = 538, z = 15}, --centro da arena torneio combate-- area = {fromx = 866, fromy = 508, fromz = 15, tox = 922, toy = 572, toz= 15},--canto acima direito da arena combate-canto esquerdo abaixo da arena combate-- waitPlace = {x = 969, y = 544, z = 15}, --centro da sala de espera-- waitArea = {fromx = 957, fromy = 536, fromz = 15, tox = 983, toy = 552, toz= 15}, --canto esquerdo acima da sala de espera--canto abaixo esquerdo da sala de espera-- startHour1 = "07:50:00", --horario do aviso?-- endHour1 = "08:00:00",--horario que começa?-- startHour2 = "11:50:00",--horario do aviso?-- endHour2 = "12:00:00",--horario do aviso?-- startHour3 = "17:50:00",--horario do aviso?-- endHour3 = "18:00:00",--horario do aviso?-- startHour4 = "22:50:00",--horario do aviso?-- endHour4 = "23:00:00",--horario do aviso?-- price = 500,--valor para entrar no torneio ? 500 dollar no caso-- revivePoke = 12344,--aqui é revive se tiver e se não tiver não precisa mexer-- } function getPlayersInArea(area) local players = {} for x = area.fromx,area.tox do for y = area.fromy,area.toy do for z = area.fromz,area.toz do local m = getTopCreature({x=x, y=y, z=z}).uid if m ~= 1 and isPlayer(m) then table.insert(players, m) end end end end return players end apaga os coments do scripts acima com --blablabla-- 2° GLOBALEVENTS vá na pasta globalevents/scripts copia um arquivo que voc?ê deverá renomear para torneio ficando torneio.lua e add function onTime() if #getPlayersInArea(torneio.area) > 1 then doBroadcastMessage("O Torneio dessa vez não teve vencedor, tente na proxima vez") return true end for _, pid in ipairs(getPlayersInArea(torneio.waitArea)) do puxar = math.random(-2, 2) doTeleportThing(pid, {x = torneio.tournamentFight.x + puxar, y = torneio.tournamentFight.y + puxar, z = torneio.tournamentFight.z}) end doBroadcastMessage("O torneio Iniciou!") return true end ou dependendo do tfs pode ser function onTimer() if #getPlayersInArea(torneio.area) > 1 then doBroadcastMessage("O Torneio dessa vez não teve vencedor, tente na proxima vez") return true end for _, pid in ipairs(getPlayersInArea(torneio.waitArea)) do puxar = math.random(-2, 2) doTeleportThing(pid, {x = torneio.tournamentFight.x + puxar, y = torneio.tournamentFight.y + puxar, z = torneio.tournamentFight.z}) end doBroadcastMessage("O torneio Iniciou!") return true end agora em globalevents.xml add as tag <globalevent name="TournamentStart1" time="08:00" event="script" value="torneio.lua"/> <globalevent name="TournamentStart2" time="12:00" event="script" value="torneio.lua"/> <globalevent name="TournamentStart3" time="18:00" event="script" value="torneio.lua"/> <globalevent name="TournamentStart4" time="23:00" event="script" value="torneio.lua"/> ou <globalevent name="TournamentStart1" timer="08:00" event="script" value="torneio.lua"/> <globalevent name="TournamentStart2" timer="12:00" event="script" value="torneio.lua"/> <globalevent name="TournamentStart3" timer="18:00" event="script" value="torneio.lua"/> <globalevent name="TournamentStart4" timer="23:00" event="script" value="torneio.lua"/> ainda em globalevents vá em globalevents/scripts copie outro arquivo e renomeia para, msgtorneio ficando msgtorneio.lua e add local i = { ["07:50"] = {nome = "O Torneio vai começar em 10 minutos, fale com o NPC Nike no CP de sua cidade, vai custar 500 Dollar's para participar!"}, ["07:55"] = {nome = "Faltam 5 minutos para fechar as inscrições do torneio!"}, ["07:59"] = {nome = "As inscrições do Torneio fecharam!"}, ["11:50"] = {nome = "O Torneio vai começar em 10 minutos, fale com o NPC Nike no CP de sua cidade, vai custar 500 Dollar's para participar!"}, ["11:55"] = {nome = "Faltam 5 minutos para fechar as inscrições do torneio!"}, ["11:59"] = {nome = "As inscrições do Torneio fecharam!"}, ["17:50"] = {nome = "O Torneio vai começar em 10 minutos, fale com o NPC Nike no CP de sua cidade, vai custar 500 Dollar's para participar!"}, ["17:55"] = {nome = "Faltam 5 minutos para fechar as inscrições do torneio!"}, ["17:59"] = {nome = "As inscrições do Torneio fecharam!"}, ["22:50"] = {nome = "O Torneio vai começar em 10 minutos, fale com o NPC Nike no CP de sua cidade, vai custar 500 Dollar's para participar!"}, ["22:55"] = {nome = "Faltam 5 minutos para fechar as inscrições do torneio!"}, ["22:59"] = {nome = "As inscrições do Torneio fecharam!"}, } function onThink(interval, lastExecution) hours = tostring(os.date("%X")):sub(1, 5) tb = i[hours] if tb then doBroadcastMessage(hours .. " - " .. tb.nome .. "") end return true end agora as tag globalevents.xml add <globalevent name="msg torneio" interval="60000" event="script" value="msgtorneio.lua"/> pronto agora vamos mexer com actions... 3° ACTIONS para o player receber a recompensa... vá em actions/scripts copie um arquivo lá e renomeia para torneio ficando torneio.lua e add function onUse(cid, item) local torneios = 1 if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokémonDBR!") else if #getPlayersInArea(torneio.area) > 1 then doPlayerSendTextMessage(cid, 20 ,"Só o ultimo que ficar na arena, poderá abrir está porta! ") return true end doTeleportThing(cid, torneio.playerTemple) doBroadcastMessage("[Torneio] Parabéns ao treinador "..getCreatureName(cid).." foi o ganhador do torneio de hoje, verifique o rank em nosso site www.seusite.com!") doPlayerAddItem(cid,2148,300) addTopt(cid, torneios) doPlayerSendTextMessage(cid,MESSAGE_EVENT_ORANGE,"[Torneio] Você já venceu "..(getTopt(cid,torneio)).."x, Parabéns.") doPlayerAddItem(cid, torneio.awardTournament, torneio.awardAmount) return true end end agora a tag de actions.xml add <action uniqueid="18279" event="script" value="torneio.lua"/> *18279 é unique ID que vc terá que por numa porta alavanca o que for pra depois o ultimo player clicar... 4° NPC vá na pasta npc/scripts copia um arquivo e você deverá renomear para torneio ficando torneio.lua e add 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 creatureSayCallback(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, 'torneio') or msgcontains(msg, 'enter') then if getPlayerItemCount(cid, torneio.revivePoke) >= 1 then selfSay('Voce nao Pode entrar no torneio com {revives}, por favor guarde eles e volte a falar comigo novamente.', cid) return true end selfSay('Voce quer Participar no torneio por '..torneio.price..' de Dollars?', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < torneio.startHour1 or os.date("%X") > torneio.endHour1 then if os.date("%X") < torneio.startHour2 or os.date("%X") > torneio.endHour2 then if os.date("%X") < torneio.startHour3 or os.date("%X") > torneio.endHour3 then if os.date("%X") < torneio.startHour4 or os.date("%X") > torneio.endHour4 then selfSay('As inscrições para o torneiro ainda não abriram, volte ás 07:50 AM, 11:50 AM, 17:50 AM ou ás 22:50 PM todo os dias', cid) return true end end end end if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) doPlayerSendTextMessage(cid, 21, "Bem vindo, esta e a sala de espera, voce espera aqui enquanto o torneio nao começa.") else selfSay('Voce não tem ('..torneio.price..') Dollars.', cid) end else selfSay('Certeza que voce não quer Participar? Ok, ate a Proxima', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) bom agora volte um pasta e copia um arquivo.xml e renomeia para torneio ficando torneio.xml e add <?xml version="1.0" encoding="UTF-8"?> <npc name="Nick" script="torneio.lua" walkinterval="999000" floorchange="0"> <health now="150" max="150"/> <look type="1245" head="20" body="100" legs="50" feet="99" corpse="2212"/>] <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Sou o NIKE, Encarregado pelo Torneio diario caso queira entrar diga: {torneio}."/> </parameters> </npc> 5° importa para seu mysql o código ALTER TABLE `players` ADD `torneio` int(11) NOT NULL default '0'; agora a vá na pasta lib copia um arquivo.lua e renomeia para torneio e add ficando torneio.lua function getTopt(cid) local check4 = db.getResult("SELECT `torneio` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. " LIMIT 1") return check4:getDataInt("torneio") <= 0 and 0 or check4:getDataInt("torneio") end function addTopt(cid,amount) db.executeQuery("UPDATE `players` SET `torneio` = "..getTopt(cid).."+"..amount.." WHERE `id` = "..getPlayerGUID(cid)) end function removeTopt(cid,amount) db.executeQuery("UPDATE `players` SET `torneio` = "..getTopt(cid).."-"..amount.." WHERE `id` = "..getPlayerGUID(cid)) end function setTopt(cid,value) db.executeQuery("UPDATE `players` SET `torneio` = "..value.." WHERE `id` = "..getPlayerGUID(cid)) end 6° pronto torneio 4 vezes ao dia + npc + rank para site como usar o rank no site ? vai em htdocs/template/seulayout/index.tpl e add em algum lugar lá <div class="top-box"> {include_php file='torneio.php'} </div> agora vá em htdocs criar um novo text com nome torneio.php e add <?PHP //** Connection to the database **// $ots = POT::getInstance(); $ots->connect(POT::DB_MYSQL, connection()); $SQL = POT::getInstance()->getDBHandle(); //** Top Players + online status By Kavvson **// $money_list = $SQL->query('SELECT name,torneio FROM players ORDER BY torneio DESC LIMIT 5')->fetchAll(); $i = 1; foreach($money_list as $money_chr){ echo '<center>'; echo $i.'. <a href="/pt/index.php/character/view/'.urlencode($money_chr['name']).'">'; $player = $ots->createObject('Player'); $player->find($money_chr['name']); echo '<font color="'; echo ($player->isOnline()) ? 'green' : 'green'; echo '">'; echo ''.$money_chr['name'].'</b></a></font>'; echo' Torneio Ganhos: '.$money_chr['torneio'].'</B>'; $i++; } for( $i; $i <= 1; $i++ ){ echo $i.'. <br><i>Empty</i><br /><br />'; } echo '</center>'; isso ai pessoal é completo eu fiz pro meu PokémonDBR que tinha fechado então resolvi compartilhar.... qualquer copia favor bote devido créditos e não quero ver ninguém vendendo meu scripts.... Créditos a mim... qualquer dúvida falando que não sou o dono aqui minha página da PokémonDBR e agora somos otPokémon World Online http://facebook.com/otpwonline
  9. SPELL QUE BLOQUEIA MAGIAS DO TARGET

    quemtuacha reagiu a WooX por uma resposta no tópico

    1 ponto
    Não testado. --<event type="cast" name="blockSpell" event="script" value="block_spell.lua"/> function onCast(cid) if isPlayer(cid) and getPlayerStorageValue(cid, 4570) > os.time() then return false end return true end --[[ <instant name="Block Spell" words="petrificus totalus" lvl="50" mana="200" range="3" blockwalls="1" needtarget="1" exhaustion="2000" needlearn="0" event="script" value="block_spell.lua"> <vocation id="1"/> <vocation id="2"/> </instant> ]] local blockTime = 5 -- Segundos local function unregisterEvent(target) if isPlayer(target) then if getPlayerStorageValue(target, 4570) < os.time() then unregisterCreatureEvent(target, "blockSpell") else addEvent(unregisterEvent, (getPlayerStorageValue(cid, 4570) - os.time()) * 1000, target) end end end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE) function onCastSpell(cid, var) local target = isPlayer(var.number) and var.number or getCreatureTarget(cid) if not isPlayer(target) then doPlayerSendCancel(cid, "Somente jogadores sao afetados por essa spell.") return true end setPlayerStorageValue(target, 4570, os.time() + blockTime) registerCreatureEvent(target, "blockSpell") addEvent(unregisterEvent, blockTime * 1000, target) return doCombat(cid, combat, var) end
  10. Experience Weapon System

    JowL reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    Eai galera, hoje eu to trazendo pra vocês o meu Experience Weapon System. Pra quem não conhece é um sistema em que conforme você vai matando os monstros sua arma vai adquirindo parte da experiencia e upando de nível junto com você! Eu abri um tópico pra sugestões mas os players foram tão criativos que eu decidi seguir meus instintos e fazer da minha própria maneira se não ia ficar muito ruim pra servers que não fossem derivados. Testado em TFS 0.3.6 mas deve funcionar em qualquer um que tenha getThing(Pos) e onAttack e onKill ;] Foi decidido por mim então fazer da seguinte maneira: • Axes/ Swords/ Bows/ Crossbows: Tem 5% de chance (pra cada nivel) de ferir gravemente o oponente e deixar ele sangrando, o nível do ferimento é proporcional ao nível da arma. • Clubs: Tem 5% de chance (pra cada nivel) de bater com tanta força que faça todos ao redor sentirem o tremor do seu ataque e levarem um dano baseado no nivel da arma e no ataque da mesma. • Wands/ Rods: Tem 5% de chance (pra cada nivel) de retirar uma quantidade de mana do player (proporcional ao nivel da arma) e ficar recuperando mana mais rapidamente durante 5 segundos após isso Dito isso vamos ao que interessa: Adiciona essas duas linhas no seu creaturescripts.xml: <event type="kill" name="itemexp" script="itemexp.lua"/> <event type="attack" name="conditionitem" script="conditionitem.lua"/> e no login.lua: --------------- Experience System ---------------- registerCreatureEvent(cid,"itemexp") registerCreatureEvent(cid,"conditionitem") Agora crie um arquivo em data\lib\ chamado 037 - Experience System.lua e coloque isso dentro dele: Feito isso crie um arquivo em creaturescripts\scripts chamado itemexp.lua e adicione isso daqui: Agora crie outro arquivo em creaturescripts\scripts, adicione isso daqui nele e chame de conditionitem.lua: Agora configurando: Obs: tudo que está no local um serve pros locais dois, tres, quatro e cinco pra configurar o nivel de sangramento em cada nível, tanto a velocidade que sangra como o dano que sai. No caso, sendo nivel 1 ele vai tirar 3x de -5, 3x de -3 e 3x de -2 antes de sumir, isso dá -30 de dano total em 9 segundos. Bom, é isso aí, a minha idéia era trazer um pouco a mais de RPG e fazer o pessoal pensar 2x antes de sair trocando suas armas pela primeira que ele dropa que tenha + ataque que a dele pois assim ele passa a ter que valorizar mais os itens que já possui a um bom tempo; Outro motivo é que agora os items vão valer mais e agora seu server vai ter mais movimento nas trocas ;] Espero que tenham gostado e qualquer coisa é só falar nos comentários. Abraço do lobinho. Ps: aqui tem duas fotinhas mas o resto só instalando mesmo porque tem bastante coisa pra mostrar. E lembrando, se te ajudei clica em Gostei aqui embaixo. Fuis
  11. (Resolvido)[Ajuda] Como fazer magias "vip"

    JowL reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    é bem simples, acompanha. ------------------------PARTE EM QUE EU CRIO OS COMBATS------------------------ local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local xCombat = createCombatObject() setCombatParam(xCombat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(xCombat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(xCombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(xCombat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(xCombat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) --------------------------- PARTE EM QUE CRIO AS AREAS ------------------------ local area = createCombatArea({ {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} }) local area1 = createCombatArea({ {0, 0, 0}, {0, 3, 0}, {0, 0, 0} }) -------------------- PARTE EM QUE EU ASSOCIO O COMBAT COM A AREA ---------------- setCombatArea(xCombat, area) setCombatArea(combat, area1) ------------------------------------------------------------------------------------------------ Feito isso é como se eu tivesse duas spells numa só, agora eu só uso storage pra definir qual delas eu vou soltar qnd falar as palavras... essa parte vem aqui: -------------------------------- DEFININDO O STORAGE -------------------------- local config = { storageativ = 76650 } -------------------------------- PARTE QUE EU SELECIONO QUAL COMBAT USAR -------------------------- function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storageativ) == 1 then ---- SE O STORAGE DEFINIDO ACIMA FOR IGUAL A 1 ENTÃO SOLTA A MAGIA PREMIUM, DO CONTRÁRIO SOLTA ELA NORMAL retorn = doCombat(cid, xCombat, var) else retorn = doCombat(cid, combat, var) end return retorn end
  12. (Resolvido)[Ajuda] Como fazer magias "vip"

    JowL reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    isso é bem simples meu jovem, você cria dois combats numa mesma spell e faz por storage pra ver qual vc tem que soltar. aqui tem um exemplo: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local xCombat = createCombatObject() setCombatParam(xCombat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(xCombat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(xCombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(xCombat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(xCombat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local area = createCombatArea({ {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} }) local area1 = createCombatArea({ {0, 0, 0}, {0, 3, 0}, {0, 0, 0} }) setCombatArea(xCombat, area) setCombatArea(combat, area1) local config = { storageativ = 76650 } function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storageativ) == 1 then retorn = doCombat(cid, xCombat, var) else retorn = doCombat(cid, combat, var) end return retorn end
  13. Experience Weapon System

    JowL reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    [1] = {required = 1000}, -- qnt de exp precisa pra cada nivel no formato [nv] = {required = experiencia requerida} [2] = {required = 10000}, [3] = {required = 100000}, [4] = {required = 1000000}, [5] = {required = 10000000} } [nv] = {required = experiencia requerida} pro nivel 1 precisa de 1000 de exp pra upar, dai vc vai pro nv 2 com 0 de exp. pro nv 2 precisa de 10000 de exp pra upar, dai qnd vc atinge isso vc vai pro nv 3 com 0 de exp... etc. @HallsSantos, o céu é o limite.. pensa noque vc quer e depois pensa em como fazer.
  14. Experience Weapon System

    JowL reagiu a Cat por uma resposta no tópico

    1 ponto
    acho que não compreendi o script por inteiro, essa parte por exemplo: [1] = {required = 1000}, -- qnt de exp precisa pra cada nivel no formato [nv] = {required = experiencia requerida} [2] = {required = 10000}, [3] = {required = 100000}, [4] = {required = 1000000}, [5] = {required = 10000000} }
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo