Ir para conteúdo

Zanrix

Membro
  • Registro em

  • Última visita

  1. Doidodepeda reagiu a uma resposta no tópico: [Creatureevents] Reflect ALL
  2. draco6 reagiu a uma resposta no tópico: Talkaction para remover Storage X e Y
  3. LeoTK reagiu a uma resposta no tópico: (Resolvido)Critical! and Dodge!
  4. LeoTK reagiu a uma resposta no tópico: [Creatureevents] Reflect ALL
  5. chateadoagr começou a seguir Zanrix
  6. OTClient\modules\game_skills\skills.otui
  7. Obrigado @nandoedp! Estamos estudando sim a possibilidade de fazer em inglês também, até porque estamos usando otclient, então 90% do jogo já teria a opção pt/en. Agradeço o feedback, nos siga também no facebook pra ficar por dentro de todas as novidades e esperamo ver você in-game!
  8. Árvore de Habilidades A Árvore de Habilidades te permite distribuir pontos para liberar novas magias e personificar ainda mais seu personagem o deixando mais versátil de acordo com sua preferência. Cada classe tem dois caminhos na árvore, e cada um deles é voltado para uma jogabilidade diferente, mas não se engane, você não é obrigado a seguir somente um caminho. É necessário aumentar 10 pontos em uma habilidade para liberar a próxima magia, além disso, cada fileira tem seu requerimento de level, por exemplo, a primeira fileira é necessário ser level 25 para poder aumentar seus pontos. No exemplo da imagem temos a árvore de habilidades de Necromancer, o primeiro caminho dele é de dano mágico, onde o foco são as magias de dano elementais de morte. No segundo caminho, o foco são as invocações, aumentar pontos nesse caminho irá desbloquear novas criaturas para serem sumonadas, além de aumentar suas resistências, ataques e etc. Já no Guerreiro, você tem o caminho de Dano e o caminho de Defesa, e assim por diante, cada classe com sua própria árvore, e cada lado da árvore com seu próprio foco, fazendo com que você possa escolher exatamente o que lhe agrada mais! Visao geral da árvore de habilidades de Necromancer. Habilidade passiva de atribuir resistência a terra à todos seus esqueletos sumonados. Habilidade que desbloqueia uma magia nova: "Death Bomb". Além de cada ponto aumentado diminuir seu custo de mana e aumentar seu dano.
  9. Valeu brother! Vai rolar sim, no momento estamos fazendo testes internamente, corrigindo bugs mais gritantes e desenvolvendo as partes principais que ainda faltam. Depois disso, iremos fazer um Closed Beta (esperamos que ainda esse ano) onde iremos convidar/sortear algumas pessoas e analisar como tudo se sai para então fazer um Open Beta.
  10. BangxD reagiu a uma resposta no tópico: (Resolvido)Critical! and Dodge!
  11. Zanrix reagiu a uma resposta no tópico: Vamos melhorar o TK!
  12. Só segurar a tecla "shift"
  13. Agora que o projeto está mais completo, vou começar a explicar melhor os sistemas de tempo em tempo aqui! Sobre o sistema de atributos Mudança na tela Antes: Agora: Os atributos são: - Strength (Força): Aumenta todo dano físico causado, tanto em ataques básicos como em magias. - Vitality (Vitalidade): Aumenta seus pontos de vida. - Intelligence (Inteligência): Aumenta todo dano mágico causado. - Energy (Energia): Aumenta seus pontos de mana. - Agility (Agilidade): Aumenta sua velocidade de ataque. - Luck (Sorte): Aumenta a chance de causar um ataque crítico. Algumas interações com o mapa exigem certo atributo. Alguns exemplos: - Existem algumas alavancas emperradas que exigem diversos níveis diferentes de força. - Existem livros escondidos que requerem inteligência para ler. - Ao procurar itens em objetos aleatórios do mapa, a sorte melhora a chance de achar algum item. Alguns itens precisam de atributos para serem equipados. Além disso, algumas magias também precisam de atributos para aprender/usar. Alguns exemplos: - Knight Armor exige que você tenha 15 pontos em Strength (Força) para a equipar. - Magic Shield (Utamo Vita) exige que você tenha 20 pontos em Energy (Energia) para poder conjura-la.
  14. Posso estar errado, mas aí acredito que tem que usar globalevent em vez de raid. O Vodkart tem um mod que funciona desse jeito que você falou, no tópico tem explicações e tudo mais.
  15. <raid name="Demodras" file="bosses/Demodras.xml" interval2="1440" margin="120" chance="15" /> file = Nesse arquivo vai ter as informações sobre a raid, quais criaturas serão sumonadas, em quais coordenadas cada uma delas vai aparecer. margin = O tempo em minutos, depois de aberto o servidor, que vai acontecer a raid. interval2 = O tempo em minutos, que depois de ter acontecido a raid pela primeira vez, vai acontecer novamente. chance = Um outro parâmetro que você pode colocar, pra caso não queira que aconteça sempre a cada intervalo de tempo, ou seja, a cada 1440 minutos vai ter 15% de chance de acontecer.
  16. Unique id do piso no map editor: 8321 movements.xml <movevent event="StepIn" uniqueid="8321" script="pisosemanal.lua" /> pisosemanal.lua local config = { uniqueid = 8321, dia_semana = "sunday", mensagem = "Você só pode passar aqui domingo" } local function pushBack(cid, position, fromPosition) doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, config.mensagem) end function onStepIn(cid, item, position, fromPosition) if item.uid == config.uniqueid then local day = string.lower(os.date("%A")) if day ~= config.dia_semana then pushBack(cid, position, fromPosition) end end return true end
  17. Zanrix respondeu ao post em um tópico de Dedo em Suporte Tibia OTServer
    Em lua a palavra chave é nil getPlayerStorageValue(cid, 9999) == nil Edit: @Dedo Se você quiser que um valor do banco tenha um valor padrão em vez de null, é só usar a palavra default Por exemplo: ALTER TABLE players ADD COLUMN idade INT DEFAULT 0; Vai criar uma coluna no banco que em vez de null, ela recebe 0 por padrão.
  18. Não conheço as sources do TFS 1.x, mas se for no mesmo lugar da 0.x é em player.h Procure pela função void updateBaseSpeed() Dentro da função tem: baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1)); Ou seja, seria só alterar o "2", que por padrão é 2 de speed por level.
  19. local focuses = {} local function isFocused(cid) for i, v in pairs(focuses) do if(v == cid) then return true end end return false end local function addFocus(cid) if(not isFocused(cid)) then table.insert(focuses, cid) end end local function removeFocus(cid) for i, v in pairs(focuses) do if(v == cid) then table.remove(focuses, i) break end end end local function lookAtFocus() for i, v in pairs(focuses) do if(isPlayer(v)) then doNpcSetCreatureFocus(v) return end end doNpcSetCreatureFocus(0) end local price = 500000 -- Valor da bless function onCreatureSay(cid, type, msg) if(not (isFocused(cid)) and (msg == "hi" or msg == "hello")) then selfSay("Welcome, ".. getCreatureName(cid) ..". Estou aqui para oferecer protecao extra para seus niveis, diga {protecao}, para ter minha benção.", cid) addFocus(cid) elseif((isFocused(cid)) and (msg == "bless" or msg == "protecao")) then selfSay("Você quer a protecao por {200000 cents}?", cid) elseif((isFocused(cid)) and (msg == "yes")) then if isPremium(cid) then if getPlayerBlessing(cid, 1) == false then if getPlayerMoney(cid) >= price then selfSay("Agora voce esta {protegido}.", cid) doPlayerRemoveMoney(cid, price) doPlayerAddBlessing(cid, 1) doPlayerAddBlessing(cid, 2) doPlayerAddBlessing(cid, 3) doPlayerAddBlessing(cid, 4) doPlayerAddBlessing(cid, 5) else selfSay("You don't have enough money.", cid) end else selfSay("Voce ja tem bless.", cid) end else selfSay("You need {Premium account}!.", cid) end elseif((isFocused(cid)) and (msg == "bye" or msg == "goodbye" or msg == "cya")) then selfSay("Goodbye!".. getCreatureName(cid) .."", cid) closeShopWindow(cid) removeFocus(cid) end end function onThink() for i, focus in pairs(focuses) do if(not isCreature(focus)) then removeFocus(focus) else local distance = getDistanceTo(focus) or -1 if((distance > 4) or (distance == -1)) then selfSay("Hey, where you going?") removeFocus(focus) end end end lookAtFocus() end
  20. Zanrix respondeu ao post em um tópico de Kamiz em Suporte Tibia OTServer
    Quando você cria a função na lib, a função fica de forma global e você já pode acessar ela em qualquer outro arquivo apenas usando o nome Exemplo: Criei na lib a função: function isPlayerKnight(cid) if (getPlayerVocation(cid) == 4) then return true end return false end Agora quero usar a função em um script que verifica se o jogador é knight ao der "use" em um item, e se for, ele recebe uma mensagem: function onUse(cid, item, fromPosition, itemEx, toPosition) if (isPlayerKnight(cid)) then doCreatureSay(cid, "Sou um Knight!") end end Praticidade, fácil manutenção. Imagine que você fez uma função qualquer, mas encontrou um pequeno erro nela, e aí? Recompilar seu servidor por causa de uma letra? Usando lua você apenas corrige o arquivo, salva, e não precisa nem reiniciar o servidor, um simples /reload no script já carrega ele in-game! Não entendi muito bem essa pergunta... Você quis dizer quando se deve usar uma função direto em C++ ou usar em lua/lib? Se for isso, funções em C++ devem ser usadas como algo mais interno, por exemplo, se você quiser usar a famosa "addon 3" que falta no tibia, você precisa fazer alterações no código C++. Agora o que vai acontecer quando você "equipar" a addon 3? Quer que ganhe uma vida adicional, velocidade, mana... Parece mais flexível, certo? Nesses casos se recomenda usar lua. Espero ter sido claro e ajudado em algo!
  21. RME

    Zanrix respondeu ao post em um tópico de trzenaro900 em Suporte Tibia OTServer
    Pelo arquivo data/world/nome do mapa-spawn.xml

Informação Importante

Confirmação de Termo