Ir para conteúdo

MatheusDuarte

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    MatheusDuarte recebeu reputação de WooX em Trade Offline V2.0   
    Parabéns pelo tópico nota 10!
  2. Curtir
    MatheusDuarte deu reputação a WooX em Depot Locker System   
    Depot Locker System

    Escrevi esse sistema no ano passado a pedido de um amigo e finalmente deixei a preguiça de lado pra postar ele aqui. Aviso de antemão que o sistema é funcional apenas para OTX2 e TFS 0.4, para utilizar a função doShowTextDialog da maneira como está no sistema no TFS 0.4 e inferiores é necessário uma alteração na source, link abaixo.
     
    O que faz?
     Este sistema consiste em adicionar um layer extra de segurança para o jogador, permitido criar uma senha para acesso do depot. Isso possibilita o jogador passar sua senha a amigos em que não confia totalmente e a estar precavido até certo ponto no caso de hacking.
    Vídeo
     
     
    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.
     
    Depois de instalado a lib, basta baixar os arquivos anexados no tópico, adicionar em seus respectivos locais e registrar as tags XML contidas nos mesmos. Após isso é necessário adicionar o action id configurado no piso dos depots em que o sistema deve funcionar. Toda configuração do sistema se encontra dentro do arquivo lib_depotlocker.lua, segue explicação da seção de configuração.
    config = { useBoard = false, passMinLength = 4, passMaxLength = 12, askPassOnlyOneTimePerLogin = true, boardIDs = {1811, 1818}, -- West/East and North/South depotIDs = {2589, 2590, 2591, 2592}, -- South, West, North and East typeYourPassMsg = "Digite sua senha: ", rightPassMsg = "Senha correta, depot liberado.", wrongPassMsg = "Senha incorreta, tente novamente.", wrongTries = { limitTries = true, triesBeforeBlock = 5, blockTime = 15 * 60, -- 15 Minutos triesLeftMsg = "Senha incorreta, você ainda tem %s tentativa.", blockMsg = "Depot bloqueado, tente novamente em %s." }, } useBoard: pode ser definido como true ou false, se definido como verdadeiro irá criar um quadro ao lado do depot para o player poder digitar a senha, da mesma forma que é mostrada no vídeo, (eu recomendo deixar esta opção ativada somente se utilizar paredes como separador entre um depot e outro). passMinLength/passMaxLength: definem o valor minimo e máximo de caracteres que uma senha pode ter. askPassOnlyOneTimePerLogin: pode ser definido como true ou false, se definido como verdadeiro irá pedir a senha novamente apenas se o jogador sair e entrar novamente. boardIDs: aqui é preenchido os IDs dos quadros em que o player deve digitar a senha, um ID para vertical e outro para a horizontal. depotIDs: aqui é preenchido os IDs dos depots na respectiva ordem, sul, oeste, norte e leste. typeYourPassMsg: esta é a mensagem que irá aparecer na caixa de texto orientando o jogador a digitar a senha. rightPassMsg: esta é a mensagem que irá aparecer quando o jogador digitar a senha correta. wrongPassMsg: esta é a mensagem que irá aparecer quando o jogador digitar a senha incorreta. limitTries: pode ser definido como true ou false, se definido como verdadeiro irá bloquear as tentativas do jogador caso ele digite a senha incorreta um determinado numero de vezes. triesBeforeBlock: quantidade de tentativas incorretas para realizar o bloqueio. blockTime: Tempo de bloqueio (valor é definido em segundos). triesLeftMsg: esta é a mensagem que será enviada para o jogador com a quantidade de tentativas que ele ainda possui. blockMsg: esta é a mensagem que será enviada para o jogador caso todas suas tentativas falhem e ele seja bloqueado.  
     
    Lembrando que o action id configurado em depotTile deve ser o mesmo registrado no script de movement e deve ser adicionado no piso do depot.

     
    Créditos
    @Yan Liima pela idealização do sistema e vídeo de demonstração.
    @Baiakeiro por testar a versão final do sistema.
    locker_action.lua locker_creature.lua locker_movement.lua npc.lua npc.xml
  3. Curtir
    MatheusDuarte deu reputação a WooX em Cave Exclusiva [SUPER UP] by WooX   
    Cave Exclusiva

     
    Cave exclusiva ou também conhecido como Super UP é um sistema que assim como o nome indica proporciona ao jogador acesso a uma cave exclusiva, onde somente ele tem acesso e pode caçar sem ser perturbado. Eu particularmente não gosto da ideia do sistema, mas querendo ou não é bem popular nos servidores Baiak. Escrevi esse sistema a mais ou menos uns 2 anos atrás quando um amigo que era dono de um servidor Baiak na época estava tendo problemas com o sistema que usava, sistema esse que acredito ser o que vem por padrão nas bases de Baiak por ai e o que provavelmente é o mais usado até hoje.
     
     
    Sobre o sistema

    O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4
     
    Com a intenção de fazer com que fosse de fácil configuração, eu escrevi o sistema mantendo as funções principais e configurações em uma Lib separada dos arquivos, irei citar algumas características do sistema.
     
    Reiniciar o servidor ou manter ativo o global save não interfere na funcionalidade do sistema, todas as caves são entregues novamente no momento de abertura do servidor. O sistema funciona através de global storage e devido a isto não é necessário modificação alguma no banco de dados. O jogador tem a liberdade de escolher a cave que quiser, desde que ela esteja livre. O jogador pode verificar o status de cada uma das caves registradas no sistema e ver informações como quem é o dono de determinada cave e o tempo restante para que a cave esteja livre novamente.  
    Algumas imagens
     
    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 sistema estão anexados no tópico, irei apenas mostrar como deve ser configurado. Como auxilio para saber onde vai cada um, todos os scripts contém a tag XML a ser registrada.
     
    Como mencionado anteriormente toda configuração do sistema se encontra na lib do mesmo, segue abaixo explicação de como configurar.
    caveExclusiva = { config = { rentTime = 4 * 60 * 60, buyItemID = 11758, caveStats = true, buyMessage = "Você comprou a cave de %s por %s.", timeLeftMessageInCave = "Seu tempo na cave de %s acabou e você foi teleportado para o templo.", timeLeftMessage = "Seu tempo na cave de %s acabou.", signs = { useSigns = true, signID = 1815, signLook = "Esta cave pertence a %s, estará livre novamente as %s." } }, caves = { [9851] = { gStor = 7330, caveName = "Cave 1", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} }, [9852] = { gStor = 7331, caveName = "Cave 2", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} } }, storages = { cave = 35070, inCave = 35071, time = 35072 } } rentTime: tempo que o jogador vai permanecer como dono de uma cave, o valor deve ser definido em segundos. buyItemID: ID do item em que o jogador deve usar o item definido na action para comprar uma cave. caveStats: pode ser definido como true ou false, se definido como falso não irá permitir o uso da talkaction que exibe informações sobre as caves. buyMessage: esta é a mensagem que irá aparecer quando o jogador comprar uma cave. timeLeftMessageInCave: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver dentro da cave. timeLeftMessage: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver fora da cave.  
    useSigns: pode ser definido como true ou false, se definido como verdadeiro irá exibir o dono e o tempo restante em um quadro ou qualquer item configurado na variável abaixo. signID: ID do item em que será exibido as informações da cave. signLook: mensagem a ser exibida ao dar look no item definido na variável acima.  
    As caves devem ser adicionadas e configuradas da seguinte maneira:
    [9851] = { -- Action ID, um pra cada cave. gStor = 7330, -- Global storage, um valor pra cada cave. caveName = "Cave 1", -- Nome da cave. enterPos = {x=0, y=0, z=7}, -- Posição que o player vai ser teleportado ao entrar na cave. signPos = {x=0, y=0, z=7} -- Posição do item que foi configurado na variavel signID no mapa. }, No mapa é necessário adicionar tudo que foi definido na configuração do sistema, isso inclui action IDs e os items configurado em buyItemID e signID, veja abaixo alguns exemplos.
     
    Créditos

    @Baalszor por testar todo o sistema.
     
    cave_action.lua cave_creaturescript.lua cave_enter.lua cave_exit.lua cave_start.lua cave_talkaction.lua lib_exclusivecave.lua
  4. Gostei
    MatheusDuarte deu reputação a WooX em Lua demo in-game   
    Lua demo in-game
     
    Quando me deparei com a necessidade de ter que fazer e registrar uma talkaction sempre quando fosse testar algum algoritmo ou função Lua, eu decidi fazer esse sisteminha. Ele permite executar códigos e instruções Lua in-game sem a necessidade de dar reload ou sequer sair do client do Tibia, também é possivel executar qualquer função Lua existente na engine em execução no servidor.
     
    Algumas imagens
     
    Instalação
    Crie um arquivo chamado lua.lua dentro do seguinte diretório e com o conteúdo exibido abaixo:
    data/talkactions/scripts/
    function onSay(cid, words, param) registerCreatureEvent(cid, "luaDemo") doShowTextDialog(cid, 1947, true) return true end Após isso crie um outro arquivo, dessa vez chamado lua_demo.lua dentro do seguinte diretório e com o conteúdo exibido abaixo:
    data/creaturescripts/scripts/
    function onTextEdit(cid, item, newText) if item.itemid == 1947 then _G.cid = cid local lines = {} for line in newText:gmatch("[^\n]+") do table.insert(lines, line) end for i = 1, #lines do local func = loadstring(lines[i]) if func then local ret, err = pcall(func) if not ret then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Lua error]:\nline "..i..": "..err) end end end unregisterCreatureEvent(cid, "luaDemo") end return true end Depois basta registrar ambos os scripts conforme indicado abaixo:
    data/talkactions/talkactions.xml
    <talkaction log="yes" words="/lua" access="5" event="script" value="lua.lua"/> data/creaturescripts/creaturescript.xml
    <event type="textedit" name="luaDemo" event="script" value="lua_demo.lua"/>  
    É isso... o sistema da grandes possibilidades aos administradores que souberem Lua e praticidade pra quem for desenvolver ou debugar algum código Lua.
  5. Curtir
    MatheusDuarte recebeu reputação de WooX em Tutorial - Push cruzado e sua história   
    Excelente história e post parabéns!!!
  6. Gostei
    MatheusDuarte deu reputação a helix758 em (Resolvido)Runas inf exceto sd   
    Saquei..
     
    Um pouco de trabalho, mas quem quer deixar dessa forma compensa. Valeu!  Entre ai no meu noobwar pow open day 19/08
  7. Obrigado
    MatheusDuarte recebeu reputação de helix758 em (Resolvido)Runas inf exceto sd   
    removeRuneCharges = false 
    troque para :
    removeRuneCharges = true

    Depois disso as runas que voce quer colocar infinitas voce vai no spells.xml e coloca charges="0".
  8. Gostei
    MatheusDuarte deu reputação a Danyel Varejao em [System] Auto Loot Perfect   
    ~~~~~ * Auto Loot System 100% * ~~~~~ TFS 0.4 / TFS 0.3.7
    Fala galerinha do Tibiaking, então, várias pessoas estão tendo problema com o sistema de autoloot, aqui vai um sistema que eu editei para melhorar o uso do mesmo. Sem muita enrolação vamos ao que interessa.
     
    1° - Acesse a pasta data/lib e crie um arquivo chamado Auto_Loot.lua, coloque isso dentro do arquivo:
     
     
    2° - Abra a pasta data/actions/scripts e crie um arquivo chamado Auto_Loot_Boost.lua, dentro dele adicione:
     
     
    3° - Abra a pasta data/creaturescripts/scripts e crie um arquivo chamado Auto_Loot.lua, dentro dele adicione:
     
     
    4° - Abra a pasta data/talkactions/scripts e crie um arquivo chamado Auto_Loot.lua, dentro dele adicione:
     
     
    5° - Em data/actions/actions.xml adicione a seguinte tag:
     
    <!-- Auto Loot --> <action itemid="7443" event="script" value="Auto_Loot_Boost.lua"/> Altere o numero 7443 caso queira mudar o id do item do seu auto loot boost.
     
    6° - Em data/creaturescripts/creaturescripts.xml adicione a seguinte tag:
     
    <!-- Auto Loot --> <event type="login" name="Auto_Loot_Login" event="script" value="Auto_Loot.lua"/> <event type="kill" name="Auto_Loot_Kill" event="script" value="Auto_Loot.lua"/> 7° - Em data/talkactions/talkactions.xml adicione a seguinte tag:
     
    <!-- Auto Loot --> <talkaction access="0-4" words="/autoloot;!autoloot" event="script" value="Auto_Loot.lua"/>  
    Créditos
    50% Killua(Vitor Bertolucci)
    50% Danyel Varejão
     

Informação Importante

Confirmação de Termo