Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. (Novo) Remere's Map Editor 3.7.0

    Pedro. e um outro reagiu a Cat por uma resposta no tópico

    2 pontos
    REMERE'S MAP EDITOR V3.7 Suporta versão 10.98. Para versões superiores (12x) use: https://tibiaking.com/forums/topic/101204-otservbr-nulled-otg-rme-map-editor-370-versão-tibia-12-paletas-atualizadas-2020/ Créditos: Mignari Post Oficial: https://github.com/hjnilsson/rme/releases/tag/v3.7 Novidades: Replace on Selected Area menu. c6eb001 Welcome dialog improvements. 0beaa2a Use tab on Position toolbar. ac2dd10 Save minimap export directory in configs. 34567ed Tooltips performance optimization. b4c26bd New creatures for extensions. 6aceb3c Scale factor for high dpi support. ee81d8f Bugs Fixados: Fix minimap export crash. cb7c45c Fix ghost selected items in the Browse Field. b2516b8 Fix search result sort. eb9478d Fix Teleport with 'Open Door' option. b4c26bd Fix XMLs syntax. 43d559f Downloads • RME.zip • RME_Winx64_3.7.exe • RME_Win_3_7.exe • RME_x64.zip • Source code (zip) • Source code (tar.gz)
  2. 2 pontos
    Olá, Gostaria de escrever um prefácio, cortesia de um amigo conhecido aqui como Verticos, retratando um pouco da história e da origem, para que saibam o que estão recebendo e porquê. Há um tempo, criei a GUI para um cliente chamado Tinkz que pagou uma porção do preço de antemão, mantivemos uma ativa comunicação durante o processo de criação. Concordei com ele em enviar algumas partes da interface conforme fui as finalizando, para que ele pudesse já começar a implementar e codificar, pois sei o quão tedioso esse processo costuma ser. Ele me retornou esse favor não me respondendo mais assim que ele estava com todos os arquivos que queria em mãos. Alegadamente, ele foi e vendeu copias do layout em outras comunidades do OT e recebeu muito mais do que seu ‘investimento’ inicial. Desisti de vender o layout já que o cliente original me deu um golpe e Verticos ofereceu me recompensar por isso. Assim, ele me disse que posso compartilhar publicamente se quisesse. Então por quê não fiz isso antes? Sei que muitas pessoas estavam esperando por algo assim. Espero que isso agrade o dia de alguém. E gostaria de agradecer Verticos novamente por tornar isso possível, de forma alguma eu conseguiria compartilhar tudo isso de graça. A interface foi criada para ser uma versão um pouco mais estilosa e refinada do mesmo tema da interface do Tibia que todos conhecemos, a versão 7.X. Isso deve parecer familiar, mas novo. Tenha em mente que essa interface foi desenvolvida para implementação no OTCliente, mas pode ser usado para qualquer outra finalidade como: website, outro jogo, etc. Esse pack de interfaces contém apenas imagens e instruções para ajudar na implementação do layout, mas você mesmo terá que fazer isso. Seria muito legal se alguém publicasse uma versão publicamente desenvolvido e disponível para todos os usuários do OTClient, se não, acho que vão ter que pagar para alguns programadores fazerem isso. Pessoalmente, não tenho tempo para fazer isso mas posso ajudar se você ficar travado em algum ponto e se tiver uma branch publica para que eu possa contribuir. Ou, poste aqui sobre isso. Tem várias coisas uteis nesse pack mesmo para aqueles que só querem simplesmente mudar o visual de algumas coisas em seu client. Por exemplo, alguns ícones de ‘condition’ atualizados (Aqueles que você só espera encontrar em um servidor 7.X). A interface foi originalmente feita com alguns tons de marrom, mas mais tarde no processo, mais e mais tons desse marrom foram neutralizados então temos um clássico tema de “pedra”. O layout é flexível e vem com inúmeras peças para possam decidir como usá-las. A combinação deve permitir que seja criado vários setups que combinam com cada gosto. (No exemplo abaixo, o resultado deve ser obtido através de código e não modificando as imagens): Diversos cabeçalhos e bordas de janelas para customizar ainda mais: Nem preciso dizer, o layout poderia se beneficiar de uma mudança na fonte, mas nem todo mundo está preparado para deixar pra traz o bom e antigo Verdana, então o Vernada foi usado como referencia na maior parte do tempo durante a criação do layout, mas segue aqui uma referência de qualquer forma. Mais informações no ‘readme’. Mirror 1 Leia o arquivo Readme.txt para mais detalhes úteis. Aproveite! Crétidos: Shiva Shadowsong - (eu apenas traduzi para ele) Post orignial: ? OTC StoneDrake UI by Shiva - [Free Release] | OTLand
  3. [ACTION] Cassino - Roleta de items

    koyotestark reagiu a FeehLoveCes por uma resposta no tópico

    1 ponto
    Olhando alguns posts vi que pediram um Cassino que já existe em um servidor ou um semelhante, porem não encontrei ninguém postando nenhum, então resolvi criar ele já que não tinha nada melhor pra fazer... Testado: OTX mas acredito que funcione em TFS 0.3/0.4 Como funciona: Ao puxar a alavanca será roletado uma serie de itens X vezes, ao terminar o item que parar no centro é a recompensa do player. Instalação: Crie uma sala parecida com esta pelo seu Map Editor Depois em data/actions/scripts crie um arquivo chamado cassinoroll.lua Agora em Actions.xml Créditos: Feeh - Por criar @Storm - Me ajudar em algumas duvidas Caso alguém conheça quem teve a ideia do evento eu coloco os créditos
  4. Perfect Upgrade System

    maiconmnt reagiu a Garou por uma resposta no tópico

    1 ponto
    Nome: Perfect Upgrade System Tipo: Biblioteca, Action, Sistema Autor: Oneshot Essa é a versão final do Perfect Refine System ou Perfect Upgrade System criado por mim. É um sistema construído em cima de funções em POO (orientação a objetos), o que o torna muito versátil, possibilitando a outros programadores/scripters criarem seus próprios sistemas com base na biblioteca. A função do sistema é simples. Não passa de um sistema de refino, presente em todos os servidores, onde você usa um item em um equipamento e este fica mais forte e ganha um nome caracterizando o nível de força - bem clichê - mas muito interessante. Meu sistema é um pouco diferente dos outros, pois possui algumas características exclusivas, listadas abaixo: O nível máximo configurável é praticamente ilimitado O sistema funciona com armas de combate corpo-a-corpo, bows e crossbows. O refino pode falhar, não acontecendo nada, regredindo o nível ou resetando ele. Há um sistema nativo de broadcasts, que são enviados quando um jogador consegue refinar um equipamento até um certo nível ou maior. As chances são configuradas manualmente e sua randomização é muito precisa. Há dois modos de instalar o sistema em seu servidor, o primeiro é baixar a pasta com os scripts necessários e apenas copiar as chaves nos arquivos XMLs ou então seguir o curto tutorial de instalação. Crie um arquivo chamado upgradesystem.lua na pasta data/lib e copie o conteúdo abaixo: --[[ PERFECT UPGRADE SYSTEM 2.0 Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- UpgradeHandler = { levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true}, [11] = {10, true, true}, [12] = {5, true, true} }, broadcast = 7, attributes = { ["attack"] = 2, ["defense"] = 1, ["armor"] = 1 }, message = { console = "Trying to refine %s to level +%s with %s%% success rate.", success = "You have upgraded %s to level +%s", fail = "You have failed in upgrade of %s to level +%s", downgrade = "The upgrade level of %s has downgraded to +%s", erase = "The upgrade level of %s has been erased.", maxlevel = "The targeted %s is already on max upgrade level.", notupgradeable = "This item is not upgradeable.", broadcast = "The player %s was successful in upgrading %s to level +%s.\nCongratulations!!", invalidtool = "This is not a valid upgrade tool.", toolrange = "This upgrade tool can only be used in items with level between +%s and +%s" }, tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, }, isEquipment = function(self) local weaponType = self:getItemWeaponType() return ((weaponType > 0 and weaponType < 7) or self.item.armor ~= 0) end, setItemName = function(self, name) return doItemSetAttribute(self.item.uid, "name", name) end, chance = function(self) local chances = {} chances.upgrade = (self.levels[self.item.level + 1][1] or 100) chances.downgrade = (self.item.level * 5) chances.erase = (self.item.level * 3) return chances end } function UpgradeHandler:new(item) local obj, ret = {} obj.item = {} obj.item.level = 0 obj.item.uid = item.uid for key, value in pairs(getItemInfo(item.itemid)) do obj.item[key] = value end ret = setmetatable(obj, {__index = function(self, index) if _G[index] then return (setmetatable({callback = _G[index]}, {__call = function(self, ...) return self.callback(item.uid, ...) end})) else return UpgradeHandler[index] end end}) if ret:isEquipment() then ret:update() return ret end return false end function UpgradeHandler:update() self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0) end function UpgradeHandler:refine(uid, item) if not self.item then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable) return "miss" end local tool = self.tools[item.itemid] if(tool == nil) then doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool) return "miss" end if(self.item.level > #self.levels) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name)) return "miss" end if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range))) return "miss" end local chance = (self:chance().upgrade + tool.info.chance) doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.console:format(self.item.name, (self.item.level + 1), math.min(100, chance))) if(tool.info.removeable == true) then doRemoveItem(item.uid, 1) end if chance * 100 > math.random(1, 10000) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE, self.message.success:format(self.item.name, (self.item.level + 1))) if (self.item.level + 1) >= self.broadcast then doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1))) end self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1"))) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value) end end return "success" else if(self.levels[self.item.level][3] == true and (self:chance().erase * 100) > math.random(1, 10000)) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.erase:format(self.item.name)) self:setItemName(self.item.name) for key, value in pairs(self.attributes) do if self.item[key] > 0 then doItemSetAttribute(self.item.uid, key, self.item[key]) end end elseif(self.levels[self.item.level][2] == true and (self:chance().downgrade * 100) > math.random(1, 10000)) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.downgrade:format(self.item.name, (self.item.level - 1))) self:setItemName((self.item.level == 1 and self.item.name or self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item[key] + value * (self.item.level - 1))) end end else doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.fail:format(self.item.name, (self.item.level + 1))) end return "fail" end end Crie um arquivo chamado upgrade.lua em data/actions/scripts e cole o conteúdo abaixo: function onUse(cid, item, fromPosition, itemEx, toPosition) if isCreature(itemEx.uid) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end local obj = UpgradeHandler:new(itemEx) if(obj == false) then return doPlayerSendCancel(cid, UpgradeHandler.message.notupgradeable) end local status = obj:refine(cid, item) if status == "success" then --doSendAnimatedText(toPosition, "Success!", COLOR_GREEN) doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN) elseif status == "fail" then --doSendAnimatedText(toPosition, "Fail!", COLOR_RED) doSendMagicEffect(toPosition, CONST_ME_POFF) else doSendMagicEffect(toPosition, CONST_ME_POFF) end return true end No arquivo actions.xml, cole a seguinte linha: <action itemid="8306" event="script" value="upgrade.lua"/> Para adicionar mais níveis de refino no sistema, edite a seguinte tabela: levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true} }, Por padrão, ela já está configurado como na maioria dos MMORPGs, 10 níveis de refino, com chances de sucesso, regressão e "quebra". Mas se você quiser, por exemplo, adicionar mais dois níveis, siga o modelo, sempre colocando uma vírgula no final com exceção da última linha da tabela: levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true}, [11] = {10, true, true}, [12] = {5, true, true} }, O primeiro valor é chance de sucesso, o segundo se o item pode regredir na tentativa e o terceiro é se o item para "quebrar" (perder todo o nível de refino). Para criar novas ferramentas (itens) de refinar, configure a tabela abaixo: tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, }, Seguindo o mesmo esquema da tabela anterior, vírgulas em todas as linhas com exceção da última, seguindo o modelo abaixo. Por exemplo, uma ferramenta de ID 8303 que refine do level +6 ao +10, que dê 10% de chance bônus e que seja finita, eu faço assim: tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, [8310] = {range = {6, 10}, info = {chance = 10, removeable = true}} }, Em breve vídeo de demonstração com sistema em funcionamento. Perfect Upgrade System.rar
  5. Dodge System 8.54+

    Leo Zanin reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    Ae galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim: Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano Sem mais delongas, vamos ao script: Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele: agora adicione essa linha no creaturescripts.xml: <event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true: registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then setPlayerStorageValue(cid, 48902, 0) end agora vá em actions.xml e adicione essa linha aqui: <action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser. em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim: <item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele: local config = { minlevel = 150, --- level que precisa pra comprar o livro price = 10000, --- preço do livro itemid = 1950 --- ID DO LIVRO } --- end config function getDodgeSkill(cid) dodgeskill = getPlayerStorageValue(cid, 48902) return dodgeskill end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} -- OTServ event handling functions start 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 -- OTServ event handling functions end function creatureSayCallback(cid, type, msg) -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'skill book') then if getDodgeSkill(cid) == dodgeskill then selfSay('You want to buy Skill Book [DODGE]? It will cost '..config.price..' gp\'s!', cid) talkState[talkUser] = 1 else selfSay('I couldnt acess your data bank!', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < config.price then selfSay('Its necessary to have at least '..config.price..' gp\'s in order to buy the Skill Book!', cid) elseif getPlayerLevel(cid) < config.minlevel then selfSay('The minimum level for buying this skill book is '..config.minlevel..'!', cid) else doPlayerRemoveMoney(cid,config.price) doPlayerAddItem(cid, config.itemid, 1, TRUE) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then talkState[talkUser] = 0 selfSay('Ok.', cid) elseif msgcontains(msg, 'level') then selfSay('You have Leveled your Dodge Skill to ['..getDodgeSkill(cid)..'/100].', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) lembrando que no começo vc pode editar o preço, o level que precisa pra comprar a skill e o ID do livro que será usado (USE O MESMO ID NO ITEMS.XML E NO ACTIONS.) agora crie o npc dodgeseller.xml e coloque isso nele: <npc name="Dodge Skill Seller" script="data/npc/scripts/bookseller.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I've been waiting for you to come.. Say 'skill book' or 'level'" /> <parameter key="message_farewell" value="Cya folk." /> <parameter key="message_walkaway" value="How Rude!" /> </parameters> </npc> Explanações gerais: O sistema é bem simples (muito simples mesmo), ele pega o valor do storage do cara e multiplica por 3.. se isso for maior que um numero aleatório criado entre 0 e 1000 ele dá dodge e solta os efeitinhos lá do creaturescripts. Note que no nivel máximo o cara vai ter 100 de storagevalue e isso será multiplicado por 3 resultando em 300. Se 300 for maior que um valor aleatorio entre 0 e 1000 (30% de chance) você vai tomar apenas metade do dano. Vc pode editar a vontade e melhorar ele da forma que quiser, se vc quiser que todos os danos do player sejam passíveis de serem esquivados mude aqui: if type == STATSCHANGE_HEALTHLOSS and isCreature(attacker) then apenas retirando esse and isCreature(attacker), daí até dano de firefield vai dar pra dar dodge. Se você quiser adicionar classes que poderão usar (só knights e paladins por exemplo) só colocar isInArray({3,4,7,8}, getPlayerVocation(cid)) como condição na action. E se vc quiser que mago possa dar dodge mesmo com utamo vita (OQUE NÃO FAZ MUITO SENTIDO JÁ QUE O ESCUDO DE MANA FICA EM VOLTA DO PLAYER TEORICAMENTE, MAS TUDO BEM) é só colocar if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS and isCreature(attacker) then Se você quiser que só ataques de Players sejam desviados ou só ataques de monstros é só trocar isCreature(attacker) por isMonster(attacker) ou isPlayer(attacker). Bom, isso é tudo, espero que vcs tenham curtido e qualquer coisa é só comentar ou me dar um Rep que ajuda pra caralho. Um abraço pra vocês. EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato.
  6. [Open Source] Tibia Server C# .NET 5

    Underewar reagiu a caioavidal por uma resposta no tópico

    1 ponto
    Fala galera. Venho desenvolvendo uma distro totalmente do 0 em .NET 5 e C#. A distro já tem bastante features implementadas. O principal objetivo do desenvolvimento desse server foi o aprendizado. Tenho estudado maneiras de otimiza-lo. Ele não é uma cópia do TFS. Caso queiram colaborar, estou deixando o link aqui embaixo. Caso não queiram mas gostaram da iniciativa, uma star já fico feliz ?. Abraço a todos. Link: https://github.com/caioavidal/OpenCoreMMO Discord Invite: https://discord.gg/Kazq9z2
  7. 1 ponto
    Salve galera, bom dia. Gostaria de saber se alguém sabe qual a melhor versão para criar um alternative tibia server. To com meu servidor parado a muito tempo versão 8.40, ele é a antiga versão do naruto online askl, não sei se alguém já viu, mas eu mexi muito tempo no projeto na calada e parei. E agora estou querendo voltar, porém essa versão estava me apresentando muitos bugs com incompatibilidade com o item editor, items.otb, e o map editor fui mexer nele ontem e está crashando travando o pc totalmente tendo que reiniciar, como eu só tenho muitas sprites e o mapa pronto (nada de programação foi feito e o que eu tinha eu perdi) , eu creio que é de boa de dar update de versão, se alguém souber qual versão é a melhor e mais estavel pra se criar um ATS me salva ai, to em duvida se faço 8.60 ou tento essas versões mais novas do tibia. Desde já agradeço.
  8. Opa, recentemente alguns programadores entraram em contato comigo procurando saber sobre proteção/restrição de informações do seu site. Mas como assim? Bom, por padrão, o apache vem configurado para ser livre o acesso a listagem de arquivos de 1 servidor. Por exemplo: Seu site tem o domínio rogerincudetcheca.com que carrega pelo diretório var/www/html, e supondo que dentro da pasta html exista 1 pasta chamada templates. Se o usuário simplesmente digitar rogerincudetcheca.com/templates e dentro dessa pasta não existir nenhum arquivo de índice como por exemplo: index.html ou index.php, por padrão vai ser listado todos arquivos daquela pasta. E isso ele pode fazer para qualquer diretório de seu servidor. Mas Endless, quer dizer então que ele pode ter acesso a qualquer arquivo do meu site? E a resposta é SIM, se a plataforma AAC que você utilizar não conter 1 regra que controle isso, por padrão qualquer 1 tem acesso a esses arquivos de seu site. Pensando nisso, vim explicar como alterar essa configuração básica que muita gente, mas muiiiita gente não sabe como funciona. OBS: Eu somente vou explicar como fazer o básico para evitar a listagem, mas existe muito mais opções para você inserir, vocês podem dar uma estudada mais a fundo direto na documentação do próprio apache. clicando aqui. Bom vamos lá: 1° Passo: Passo 2: Pronto, se você tentar acessar o mesmo diretório que antes listava todos arquivos você irá ter o seguinte retorno: Bom, como eu citei no início do tópico, existem + opções de você controlar esses acesso. Um exemplo disso é o .htaccess, mas não vou abordar sobre ele aqui. É isso, espero ajudar, abraços!! Pra galera que busca 1 discord de desenvolvimento, existe 1 Discord chamado Academia de Codding, onde o intuito é justamente ajudar quem precisa (OBS: Ajudar não é fazer o código pra ti, isso tu resolve pagando rsrs). Link do discord: https://discord.gg/JmTn69B
  9. 1 ponto
    Na maioria das vezes, eu sempre vejo os alternatives nas versões 8.54/60, elas tem uma boa infraestrutura base. Com um número grande de pessoas utilizando destas duas, você ganha também uma variedade gigante de códigos disponibilizados gratuitamente ou não pelo mundo a fora.
  10. [Open Source] Tibia Server C# .NET 5

    Cat reagiu a vine96 por uma resposta no tópico

    1 ponto
    Dahora o projeto mano, sabe o que falta na comunidade tibiana? uma distro que carregue o mapa ou o server inteiro de forma procedural, ou que pelo menos utilize de todos os núcleos/threads ao mesmo tempo para otimizar o tempo de carregamento/save isso é um grande defeito de todos os distros, TFS, OTX e afins. Se o seu fizer isso com certeza irei utilizar quando estiver pronto xD.
  11. [Open Source] Tibia Server C# .NET 5

    Cat reagiu a DecarlyGamer por uma resposta no tópico

    1 ponto
    Foda demaissssss, se eu tivesse tempo sem duvida ia ajudar, .NET programo com as mãos nas costas! ! Muito bom, parabéns!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo