Ir para conteúdo

Líderes

Conteúdo Popular

Mostrando conteúdo com a maior reputação desde 08/18/25 em todas áreas

  1. [OTX 12.64] Baiak Styller

    Nerivalhs reagiu a Deletera por uma resposta no tópico

    1 ponto
    Atenção! Os arquivos disponibilizados abaixo são da versão 12.64! Para obter otserv 12.64+ atualizado com novas áreas e novos gráficos acesse o github oficial do projeto OTX: https://github.com/opentibiabr/otservbr-global Servidor feito especialmente para jogadores que gostam do Tibia Oldstyle, mas colocado na versao 12 com novas funcionalidades, mounts, outfits e itens. Todos Outfits sao frees & Addons coletando itens PVP clássico, old school times Spells adaptadas a versao 8.60 Mais de 50 quests na Teleport Room Tasks e Missions para explorar o mapa Raids automáticas com novos bosses Reward System desabilitado, loot tradicional (bem melhor assim, certo?) Áreas custom e inovadoras como Hogwarts Em resumo, o OT busca ser simples, resgatando a naturalidade do que era o baiak da versão 8.60 em 2009, mas com implementações 12x+ ◄IMAGENS► ◄DATAPACK & DLLS► » OTX Baiak Styller 12.64 MediaFire (Scan) » OtservBR Dlls & Executável (Windows 64x) (Antes de rodar o OT verifique de usar a mesma database e configurar o login no config.lua) ◄CLIENTS► » Tibia Client 12.64 MediaFire (Scan) (Para conectar ao cliente 12 (localhost), acesse usando 127.0.0.1_client.exe, localizado na pasta bin.) ◄WEB► » [GesiorAcc] para Tibia 12.64 MediaFire (Scan) Instale o XAMP para rodar com a data base e site disponíveis (não se esquece de alterar o login e senha no config.lua, para o atual a senha do mysql está como "XIPA2") » [Data base] acc/email e senha: god/god MediaFire (Scan) O OT está configurado para aceitar acc no lugar de email (opcional) para usar as acc de testes é senha 123123 ◄Créditos► Waldir Teixeira (Saruman/Deletera) &
  2. 1 ponto
    [TESTADO EM OTX 2.1+] 8.60 [TESTADO EM TFS 0.3.6] 8.54 ~ 8.60 Créditos: ~Mathias Kenfi
  3. System Drop Global - L3K0T TFS 0.4

    BrownDeveloper reagiu a L3K0T por uma resposta no tópico

    1 ponto
    Sistema de Drop Personalizado Esse sistema de loot foi projetado para adicionar um elemento de sorte e surpresa ao derrotar monstros. Sempre que um jogador derrota um monstro, há uma chance configurada para que ele solte entre 1 a 3 itens especiais, garantindo recompensas valiosas ao jogador. O sistema realiza as seguintes ações: Chance de Drop: A cada morte de um monstro, há uma chance configurada para dropar itens específicos. O sistema permite que sejam dropados entre 1 a 3 unidades do item, tornando o sistema mais dinâmico. Efeito Visual: Quando o loot é bem-sucedido, um efeito visual especial (ID 231) é exibido na posição exata onde o monstro foi derrotado, criando uma animação visual que destaca a recompensa. Notificação ao Jogador: Após o drop, o jogador recebe uma mensagem personalizada informando a quantidade de itens obtidos. Essa notificação aparece após 3 segundos, adicionando uma camada de imersão e evitando sobrecarregar o chat imediatamente após a morte do monstro. *Ótimo para fazer eventos de dropar certo itens para alguma missão ou resgates. *Uso no meu TIBIA HARRY POTTER ORIGIN VAi em creaturescripts/scripts.lua local function findCorpse(position) for i = 1, 255 do position.stackpos = i local corpse = getThingfromPos(position) if isCorpse(corpse.uid) then return corpse.uid end end return false end local function dropLoot(position, killer) local corpse = findCorpse(position) if not corpse then return false end local itemId = 2160 local chance = 23 if math.random(100) <= chance then local amountToDrop = math.random(1, 3) doAddContainerItem(corpse, itemId, amountToDrop) local corpsePosition = getThingPos(corpse) doSendMagicEffect(corpsePosition, 7) local function sendMessage() if isPlayer(killer) then local message = string.format("Você dropou %d Crystal Coin(s).", amountToDrop) doPlayerSendTextMessage(killer, MESSAGE_INFO_DESCR, message) end end addEvent(sendMessage, 2500) end return true end function onKill(cid, target) local position = getCreaturePosition(target) addEvent(dropLoot, 100, position, cid) return true end creaturescripts.xml <event type="kill" name="GlobalDrops" registerTo ="GlobalDrops" event="script" value="globalDrops.lua"/> ou depende do tfs <event type="kill" name="GlobalDrops" event="script" value="globalDrops.lua"/> Para ambos TFS registra o evento no login.lua registerTo ="GlobalDrops" feito isso.. agora todos os monstros do mapa vai cair os crystal coins de 1 há 3.
  4. Mapa do server PokémonBR [antigo] otbm

    DarkRed reagiu a Dom Matteo por uma resposta no tópico

    1 ponto
    GALERA QUERO COMPARTILHAR COM VOCÊS ALGO QUE EU DEMOREI MUITO TEMPO PRA ENCONTRAR NA NET E QUE ME TRAZ MUITA NOSTALGIA MAPA ANTIGO DO POKEMONBR OBG: ALGUNS FLOORS E TILES BUGADOS OU TROCADOS, MAS TROCANDO DE UM POR UM OS ITENS ACHO QUE DA PRA USAR SUSSA O MAPA PRINT LINK PARA DOWNLOAD E SCAN:
  5. Dark Complex | Cave Hunt | 8.60

    Klailex reagiu a DdJs por uma resposta no tópico

    1 ponto
    Cave hunt - Dark Complex. Download: Here Scan: Here Imagens:
  6. AutoLoot 100% Funcional

    brendonbh reagiu a Belmont por uma resposta no tópico

    1 ponto
    E ai pessoal, vi que muitas pessoas tem problemas em instalar, e achar um script de autoloot 100% funcional. Foi ai que decidi postar aqui para vocês, um script totalmente novo e que realmente funciona, pronto para usar e abusar dele kkk. Bom, vamos parar de lero lero e bora ao que interessa. Fixados: Dinheiro Duplicado; Coleta itens até mesmo dentro das bag dos monstros; Lembrando que esse script NÃO é de minha autoria, e que já existe no Tk, mas em tópicos diferentes. Como eu uso ele já vou deixar tudo certo para o uso do mesmo. 1° Passo - Dentro da pasta data/actions/scripts crie um arquivo chamado autoloot_boost.lua Em data/actions/actions.xml registre o script assim: <action itemid="ITEMID" event="script" value="autoloot_boost.lua"/> 2° Passo - Vá na pasta data/creaturescripts/script e crie dois arquivos, um chamado autoloot.lua e o outro fimautoloot.lua depois, adicione os seguintes códigos: autoloot.lua fimautoloot.lua Agora em data/creaturescripts/creaturescripts.xml você vai registrar esses scripts dessa forma: <event type="kill" name="autoloot" event="script" value="autoloot.lua"/> <event type="login" name="fimautoloot" event="script" value="fimautoloot.lua"/> Abra o arquivo login.lua localizado na mesma pasta e adicione este código abaixo de outro registerCreatureEvent registerCreatureEvent(cid, "autoloot") Depois de instalar tudo, vamos para a pasta data/talkactions/script nela você irá criar um arquivo chamado autoloot.lua e vai adicionar este código: Em data/talkactions/talkcations.xml resgistra o script assim: <talkaction words="!autoloot" event="script" value="autoloot.lua"/> Vá na pasta lib, e crie um arquivo chamado autoloot, e cole isso dentro: Ainda na pasta lib crie um arquivo .lua e coloque esse script dentro, ou faça o download do mesmo logo abaixo: Download: killua's lib.lua Isso é tudo pessoal! Informações: Este sistema funciona através de Premium Account, junto com ele vem o sistema de Autoloot Booster, que consiste em vender automaticamente os itens coletados. Foi testado em um servidor de Tibia 8.60 utilizando OTX 2. Créditos: @lordzetros @KOLISAO @Dwarfer
  7. Configurando Docker no windows, adeus VM

    forkz reagiu a marcoshps11 por uma resposta no tópico

    1 ponto
    Neste tutorial, irei ensinar configurar o Docker no windows e rodar seu otserver - Diferença entre Docker x Máquina virtual: Docker e Máquinas Virtuais (VMs) ambas são fundamentais usadas para isolar recursos em um sistema de computação, mas funcionam de maneiras muito diferentes. VMs são ambientes de computação completos, incluindo um sistema operacional (SO) completo, que simulam o hardware de um computador físico. Isso significa que cada VM é um sistema autônomo e independente. Já o Docker, usa a tecnologia de contêineres. Os contêineres compartilham o mesmo sistema operacional do host, mas mantêm seu próprio espaço de processo, arquivos e rede. Isso significa que eles são muito mais leves do que as VMs, pois não precisam de um SO completo, e podem ser iniciados e parados muito mais rapidamente. - Vantagens em utilizar o Docker O Docker oferece várias vantagens significativas: Eficiência de recursos: Como os contêineres Docker compartilham o SO do host, eles são mais leves e usam menos recursos do que as VMs. Portabilidade: O Docker permite que você "construa uma vez, execute em qualquer lugar". Uma vez criado um contêiner Docker, ele pode ser executado em qualquer sistema que suporte o Docker, independentemente das configurações subjacentes. Isolamento: Cada contêiner Docker é isolado do resto do sistema, o que ajuda a evitar conflitos entre diferentes aplicações e versões de software. Integração e entrega contínua: O Docker se integra bem com ferramentas de CI/CD (Integração Contínua / Entrega Contínua), permitindo a automatização de testes e implantação de aplicações. Escalabilidade e Orquestração: O Docker facilita a escalabilidade de aplicações, permitindo que múltiplos contêineres sejam implantados facilmente. Além disso, com ferramentas como Docker Swarm e Kubernetes, a orquestração de contêineres se torna eficiente e gerenciável Colocando a mão na massa Este tutorial será dividido nas seguintes etapas: Preparação do Windows Instalando o Docker Instalando imagens mariadb e phpmyadmin Realizando a build da imagem TFS 1º PASSO: Preparando o Windows com o subsistema Linux. AVISO: Essa Etapa será necessária somente caso ainda não possua o subsistema Linux ativado em seu windows Os comandos a seguir, serão todos utilizando o POWERSHELL do windows, na barra de pesquisa digite POWERSHELL e execute como administrador. Com o POWERSHELL aberto, execute os seguintes comandos: Habilitando subsistema Linux: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart Habilitando recurso de máquina virtual: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart Baixe e instale Kernel do Linux: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi Após essa etapa, será necessário reiniciar o computador para atualização, após reiniciar, abra novamente o PowerShell Definindo o WSL 2 como padrão: wsl --set-default-version 2 Após esses passos, basta entrar na Microsoft Store e instalar o sistema Ubuntu: Após a instalação, abra o Ubuntu, como será a primeira vez, irá solicitar para que digite um nome de usuário e uma senha. Etapa 1 concluída. Fonte: https://learn.microsoft.com/pt-br/windows/wsl/install-manual 2º PASSO: Instalando Docker. este é um passo simples, apenas entre no site oficial do Docker, baixe e instale o Docker Desktop https://www.docker.com/ Etapa 2 concluída. 3º PASSO: Instalando imagens MariaDB e phpMyAdmin Assim como no passo 1, execute novamente o PowerShell como administrador e siga os seguintes passos: Primeiro vamos baixar as imagens necessárias, execute os seguintes comandos: docker pull mariadb docker pull phpmyadmin/phpmyadmin Agora iremos criar uma "Rede" para que o docker se comunique entre os containers que iremos utilizar. Execute o seguinte comando: docker network create mynetwork mynetwork é o nome que defini neste caso, você pode utilizar o nome que achar melhor, porém lembre-se desse nome que iremos utilizar nos próximos passos. Agora iremos iniciar essas imagens, utilizando os seguintes comandos: docker run --name mariadb --network=mynetwork -e MYSQL_ROOT_PASSWORD=your_password -d mariadb your_password = altere pela senha que deseja utilizar no mysql mynetwork = é o nome que criamos no passo anterior docker run --name myadmin --network=mynetwork --link mariadb:db -d -p 8080:80 phpmyadmin/phpmyadmin Lembrando novamente, mynetwork é o nome criado anteriormente Após esses passos, será possível ver seu container rodando no Docker Desktop: Etapa 3 concluída. 4º PASSO: Gerando Imagem do TFS e configurações necessárias: Baixe a TFS, nesse exemplo será o repositório oficial https://github.com/otland/forgottenserver Extraia os arquivos após baixar com o container mariadb e phpmyadmin rodando, acesse http://localhost:8080/ com o login root, e a senha que criou no passo 3, crie uma nova base de dados e importe o arquivo schema.sql do servidor edite o arquivo config.lua.dist -- MySQL mysqlHost = "mariadb" mysqlUser = "root" mysqlPass = "SUA SENHA CRIADO NO PASSO 3" mysqlDatabase = "NOME DA DATABASE" mysqlPort = 3306 mysqlSock = "" mariadb é o nome do container que estamos rodando o mysql ** Caso queira utilizar todo potencial do seu computador na hora de buildar a TFS, no arquivo Dockerfile, edite a linha 18: RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default para RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default -- -j 16 onde 16 é o numero de processadores lógicos que deseja ser utilizados, não é necessário utilizar 100% porém quanto mais melhor, porém caso utilize mais do que está disponível poderá travar, então utilize a quantidade mostrada pra menos. no gerenciador de tarefas aba desempenho, é possível visualizar a quantidade de núcleos e processadores lógicos do seu CPU Após isso, entre no Power Shell e execute o comando: docker build -t server . onde "server" é o nome da imagem que será gerada Após isso, é só iniciar o servidor com o seguinte comando docker run --name server --network=mynetwork -p 7171:7171 -p 7172:7172 -d server lembrando que mynetwork é o nome que geramos no passo 3, e o ultimo parametro é nome da imagem que geramos anteriormente. Você poderá ver seu sevidor ronando no Docker Desktop: caso queira parar algum servidor ou iniciar novamente, é só clicar no botão de ação: Caso precise fazer alguma alteração no server, basta utilizar os comandos de build e run citados anteriormente. Lembrando que isso é um tutorial básico para rodar o servidor na máquina local, qualquer dúvida ou sugestão, deixe comentário.
  8. Mega Evolution (PxG) PDA

    DarkRed reagiu a lango rullez por uma resposta no tópico

    1 ponto
    Oi. Antes de tudo, este sistema foi escrito para o servidor PDA by Slicer, versão 1.9. A adaptação para outras bases pode ser bem simples, dependendo do seu conhecimento em Lua (que na verdade nem precisa ser grande). Resolvi escrever este simples sistema porque me deu um certo desgosto ver vários servidores onde a mega evolução é literalmente uma evolução (inclusive o que estive jogando, onde alguns jogadores também concordaram com minha opinião). Quero dizer, o pokémon fica transformado direto, para sempre, forever, algo que contraria a ideia original. Optei por fazer o sistema igual (ou semelhante, já que me baseei apenas nas informações disponíveis no Blog PxG, que aliás são poucas) ao da PokeXGames. Mais futuramente, no entanto, posso fazer uma outra versão voltada a ideia de uma mega evolução temporária. Para quem não conhece o sistema, bem, estou com preguiça de explicar, logo recomendo acessar este link. A diferença é que a pedra (mega stone) não ocupa o espaço de um Held Item tier Y (visto que não são todos os servidores que possuem este sistema). O sistema, como poderão notar, possui muitos detalhes. O motivo é que tenho a tendência de deixar a configuração o menor possível. Ou seja, basta configurar o efeito no código da spell e a tabela das mega evoluções. Nossa, que textão. TL;DR: Igual ao sistema da PxG; PDA; muitos detalhes mas pouquíssima configuração. data/lib: cooldown bar.lua: Troque o código da função getNewMoveTable(table, n) por este: function getNewMoveTable(table, n) if table == nil then return false end local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9, table.move10, table.move11, table.move12} local returnValue = moves if n then returnValue = moves[n] end return returnValue end No código da função doUpdateMoves(cid), troque o segundo: table.insert(ret, "n/n,") Por: local mEvolve if not getCreatureName(summon):find("Mega") and getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") then if not isInArray(ret, "Mega Evolution,") then table.insert(ret, "Mega Evolution,") mEvolve = true end end if not mEvolve then table.insert(ret, "n/n,") end Depois, em pokemon moves.lua: Troque: min = getSpecialAttack(cid) * table.f * 0.1 --alterado v1.6 por: min = getSpecialAttack(cid) * (table and table.f or 0) * 0.1 --alterado v1.6 Código da spell: elseif spell == "Mega Evolution" then local effect = xxx --Efeito de mega evolução. if isSummon(cid) then local pid = getCreatureMaster(cid) if isPlayer(pid) then local ball = getPlayerSlotItem(pid, 8).uid if ball > 0 then local attr = getItemAttribute(ball, "megaStone") if attr and megaEvolutions[attr] then local oldPosition, oldLookdir = getThingPos(cid), getCreatureLookDir(cid) doItemSetAttribute(ball, "poke", megaEvolutions[attr][2]) doSendMagicEffect(getThingPos(cid), effect) doRemoveCreature(cid) doSummonMonster(pid, megaEvolutions[attr][2]) local newPoke = getCreatureSummons(pid)[1] doTeleportThing(newPoke, oldPosition, false) doCreatureSetLookDir(newPoke, oldLookdir) adjustStatus(newPoke, ball, true, false) if useKpdoDlls then addEvent(doUpdateMoves, 5, pid) end end end end end Depois, em configuration.lua: megaEvolutions = { --[itemid] = {"poke_name", "mega_evolution"}, [11638] = {"Charizard", "Mega Charizard X"}, [11639] = {"Charizard", "Mega Charizard Y"}, } Agora, em data/actions/scripts, código da mega stone: function onUse(cid, item) local mEvolution, ball = megaEvolutions[item.itemid], getPlayerSlotItem(cid, 8).uid if not mEvolution then return doPlayerSendCancel(cid, "Sorry, this isn't a mega stone.") elseif ball < 1 then return doPlayerSendCancel(cid, "Put a pokeball in the pokeball slot.") elseif #getCreatureSummons(cid) > 0 then return doPlayerSendCancel(cid, "Return your pokemon.") elseif getItemAttribute(ball, "poke") ~= mEvolution[1] then return doPlayerSendCancel(cid, "Put a pokeball with a(n) "..mEvolution[1].." in the pokeball slot.") elseif getItemAttribute(ball, "megaStone") then return doPlayerSendCancel(cid, "Your pokemon is already holding a mega stone.") end doItemSetAttribute(ball, "megaStone", item.itemid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Now your "..getItemAttribute(ball, "poke").." is holding a(n) "..getItemNameById(item.itemid)..".") doRemoveItem(item.uid) return true end Depois, em goback.lua: Abaixo de: if not pokes[pokemon] then return true end coloque: if pokemon:find("Mega") then local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1] if normalPoke then doItemSetAttribute(item.uid, "poke", normalPoke) pokemon = normalPoke end end Depois, em data/creaturescripts/scripts, look.lua: Abaixo de: local boost = getItemAttribute(thing.uid, "boost") or 0 coloque: local extraInfo, megaStone = "", getItemAttribute(thing.uid, "megaStone") if megaStone then extraInfo = getItemNameById(megaStone) if pokename:find("Mega") then pokename = megaEvolutions[megaStone][1] end end Depois, acima de: doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str)) coloque: if extraInfo ~= "" then table.insert(str, "\nIt's holding a(n) "..extraInfo..".") end Já em data/talkactions/scripts, move1.lua: Troque: if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end por: if not move then local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") if not isMega or name:find("Mega") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end local moveTable, index = getNewMoveTable(movestable[name]), 0 for i = 1, 12 do if not moveTable[i] then index = i break end end if tonumber(it) ~= index then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end local needCds = true --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown. if needCds then for i = 1, 12 do if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then return doPlayerSendCancel(cid, "To mega evolve, all the spells of your pokemon need to be ready.") end end end move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"} end E troque: doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) por: local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!" if move.name == "Mega Evolution" then spellMessage = "Mega Evolve!" end doCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY) Se quiser que o "Mega" não apareça no nome do pokémon, vá em data/lib, level system.lua: Acima de: if getItemAttribute(item, "nick") then nick = getItemAttribute(item, "nick") end coloque: if nick:find("Mega") then nick = nick:match("Mega (.*)") if not pokes[nick] then nick = nick:explode(" ")[1] end end E, caso o seu servidor possua pokémons evoluídos permanentemente na forma mega, em data/actions/scripts, goback.lua: Troque: if pokemon:find("Mega") then local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1] if normalPoke then doItemSetAttribute(item.uid, "poke", normalPoke) pokemon = normalPoke end end por: if pokemon:find("Mega") then local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1] if not normalPoke then local megaStone for itemid, table in pairs(megaEvolutions) do if table[2] == pokemon then megaStone = itemid break end end if not megaStone then return doPlayerSendTextMessage(cid, 27, "Your pokemon is bugged. Please, talk to the administrator.") end doItemSetAttribute(item.uid, "megaStone", megaStone) normalPoke = megaEvolutions[megaStone][1] end doItemSetAttribute(item.uid, "poke", normalPoke) pokemon = normalPoke end Bom pessoal é isso! Espero que ajude ! Creditos: zipter98 (Pela criação) Eu Lango Rullez (Por Divulgar ^_^)
  9. Player Info OTPokemon

    Insaeand reagiu a Gengo por uma resposta no tópico

    1 ponto
    [OTClient] Health Player Info OTPokemon Eae galerinha do TibiaKing, hoje venho trazer mais uma contribuição para a comunidade, um módulo indêntico ao do OtPokemon. Mesmo que seja simples a instalação, tem sempre aquele que não sabe onde deve colocar o módulo, peço então que tenha paciência quanto a esse simples tutorial, aos demais aqueles que já sabem, peço que ao menos leia a Observações do módulo. 1º Faça o download do módulo. 2º Extraia o módulo para a pasta do seu otClient em /modules ficando assim: Feito o passo 1 e 2 creio que já estará funcionando, isto se você fez tudo certinho. •Observações do módulo• Demonstrativo do módulo no jogo.
  10. In-game store images

    maquea reagiu a Bruno Carvalho por uma resposta no tópico

    1 ponto
    Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
  11. [Pokemon] Servidor Stigal 3.0

    DarkRed reagiu a Stigal por uma resposta no tópico

    1 ponto
    • Servidor Stigal 3.0 {PDA 1.5} [Download]• • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Download; └ Creditos. • Informações Basicas • • Edições / Ajustes • • Erros Do Servidor • • Download's • Servidor Stigal 3.0 {PDA 1.5} 8.54 (4shared) http://www.4shared.com/rar/QhexHDf8/Pokemon_Servidor_Stigal_30_PDA.html? Client PDA 1.6/2.6 (4shared) http://www.mediafire.com/?2a6012x9oz8i5ga Scan Servidor Stigal 3.0 {PDA 1.5+} 8.54 (Virus Total) https://www.virustotal.com/file/f591c04b9323c5bb1f3edb8863a105aa28012732e453766a5783ca44f64abfa9/analysis/1347638278/ Aviso: Os 3 Virus Contidos São Do Executavel... Por Ser "TROJAN" Não Se Multiplica e não fazem mal ao computador! • Creditos • Slicer - {Criador do PDA 1.5} Stigal - {Ajeitar o Mapa e Deixalo "90% Completo"}
  12. 1 ponto
    Troca toda a função AddPlayerStats por essa: void ProtocolGame::AddPlayerStats(NetworkMessage_ptr msg) { msg->AddByte(0xA0); if (player->getPlayerInfo(PLAYERINFO_MAXHEALTH) > 0) { msg->AddU16(uint16_t(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH))); msg->AddU16(100); } else { msg->AddU16(0); msg->AddU16(0); } msg->AddU32(uint32_t(player->getFreeCapacity() * 100)); uint64_t experience = player->getExperience(); if(experience > 0x7FFFFFFF) // client debugs after 2,147,483,647 exp msg->AddU32(0x7FFFFFFF); else msg->AddU32(experience); msg->AddU16(player->getPlayerInfo(PLAYERINFO_LEVEL)); msg->AddByte(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT)); if (player->getPlayerInfo(PLAYERINFO_MAXMANA) > 0) { msg->AddU16(player->getPlayerInfo(PLAYERINFO_MANA) * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA)); msg->AddU16(100); } else { msg->AddU16(0); msg->AddU16(0); } msg->AddByte(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL)); msg->AddByte(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT)); msg->AddByte(player->getPlayerInfo(PLAYERINFO_SOUL)); msg->AddU16(player->getStaminaMinutes()); }
  13. (Resolvido)Source para PDA

    Klailex reagiu a Liongm por uma resposta no tópico

    1 ponto
    Bom gente, quero uma source para PDA, se alguem tiver e poder disponibilizar ... Se poder arrumar a source tbm para poder ter mais efeitos no client .. pois só adicionando na spr e dat n vai por causa do limite .. TY REP + SE ALGUEM AJUDAR!
  14. [Ajuda] Como Editar A imagem de fundo do OTClient

    DarkRed reagiu a Wend por uma resposta no tópico

    1 ponto
    tem uma imagem na pasta data\images chamada de background é ela que é a imagem de fundo
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo