Ir para conteúdo
  • Cadastre-se

Tadelho

Membro
  • Total de itens

    60
  • Registro em

  • Última visita

Tudo que Tadelho postou

  1. Na verdade até tem, mas daria um bom trabalho e provavelmente te faria reescrever uma porção de magias, items que dão skill, etc. A ideia seria trabalhar com os buffs em storages voltadas só para isso. Por exemplo: na storage 9999 nós guardaremos todas modificações de skill de Sword. Sempre que uma magia, item ou efeito de algo mudar o skill, você deve passar o valor para a storage e trabalhar com ele a partir de lá (e isso dá um certo trabalho, mas é possível). Isso permite não só a verificação do valor, mas também trabalhá-los de diversas formas. Eu uso um sistema desses em meu servidor.
  2. @Guilherme HP , vou te dar uma ideia adaptando um script que uso no meu servidor. Crie um creaturescript chamado "playerdodge.lua", por exemplo. (o nome você escolhe). Nele, vamos montar um script que, sempre que o jogador for receber um dano, fará uma verificação afim de anular ou não o dano recebido. O script ficaria mais ou menos como: local dodgechance = 20 -- chance em % do sistema dodge funcionar local multiplier = 0 -- valor pelo qual o dano será multiplicado function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then if
  3. @BruniinBR Tente assim: local tempo = 30 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo * 900) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) function heal(cid) local formula = 30 * getPlayerLevel(cid) for i = 1, tempo do addEvent(doCreatureAddHealth, 200 * i, cid, (formula / tempo)) end end functio
  4. Cara, eu não sei qual servidor e qual versão você está utilizando, mas talvez a solução passe pelo mesmo método encontrado neste tópico que deixarei ao final; isto é, uma pequena edição no código fonte do seu servidor (que deverá ser compilado novamente a partir da modificação). Infelizmente eu não sei exatamente qual é o trecho de código que condiciona isso que você quer.
  5. Eu não mais um consumidor de OTs há bastante tempo, mas aqueles com os quais mais me envolvi e joguei mais tempo sempre foram OTs com perspectivas de um longo-prazo. Em geral, RPG, de preferência com conteúdo original. PVP, para mim, era completamente descartável. Entretanto, eu digo isso com consciência de que eu não represento o interesse geral da média dos jogadores - esses sim parecem gostar do jogo pelo seu aspecto de briga de gangues. O barato das pessoas me parece estar em "dominar o servidor" ou coisa do gênero (assim como nos servidores globais). Outro fator a ser consider
  6. Conforme tive uma dúvida outro dia, consegui obter uma solução satisfatória e, sabendo que pode ser a dúvida de mais gente, resolvi compartilhar na forma deste pequeno tutorial. A ideia é muito simples: fazer com que uma spell de área atinga apenas alguns alvos conforme uma característica específica. Isso pode ser bastante útil para diversas ideias, além do script base servir para tantos outros efeitos interessantes. Atenção, fiz os scripts para: TFS 0.4.0 Teremos como base para esse exemplo a magia "divine caldera", o famoso "exevo mas san". Nela ter
  7. @KillerWatts O problema é que eu precisaria saber qual a fórmula de dano que você está utilizando aí no seu servidor... supondo que você esteja utilizando a fórmula original do TFS 0.3.6, ficaria assim: local level = getPlayerLevel(cid) local attack = x -- insira o valor de atk que você quer simular local distance = getPlayerSkill(cid, SKILL_DISTANCE, false) local min = math.ceil(level * 0.2) local max = math.ceil((2 * (attack * (distance + 5.8) / 25 + (level - 1) / 10.)) OBS1: Você só precisa substituir ali no lugar do "x" o atk que você quer simular, por exemplo, "65" (igual
  8. Cara, pelo que entendi você não está calculando o dano por uma fórmula, está apenas configurando ali na primeira linha do código os valores para o dano mínimo e o dano máximo: "min, max". Nesse caso, você pode simplesmente alterar isso para a fórmula desejada. Por exemplo: local level = getPlayerLevel(cid) local distance = getPlayerSkill(cid, SKILL_DISTANCE, false) local min = (level * 1 + distance * 2.5) - 15 local max = (level * 2 + distance * 3.2) + 30 Sacou a ideia? Ali é só um exemplo, você colocaria a fórmula que você quer, seja ela qual for.
  9. @EDIT -- EU MESMO CONSEGUI SOLUCIONAR O CASO! VEJA EM: Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website). TFS 0.4.0 Qual erro está surgindo/O que você procura? Fala, pessoal. Gostaria que vocês me dessem ideias de como seria possível fazer uma spell de área que só dê dano nas criaturas com um determinado nome. Vamos tomar como exemplo a magia divine caldera (exevo mas san, no código abaixo), e apenas as criaturas "rat" e "cave rat". Como eu faria para que essa magia só desse dano nos ratos e ignorasse os
  10. @leozincorsair Substitui o seguinte: local chance1, chance2, chance3 = math.random(1,100) Por: local chance1 = math.random(1,100) local chance2 = math.random(1,100) local chance3 = math.random(1,100) Testei no TFS 0.4.0 e funcionou.
  11. Fala, pessoal! Algum de vocês tem sprites diferentes de dragões além das do próprio jogo ou sabe onde eu poderia encontrar alguma? Estava querendo fazer alguns novos dragões... andei procurando mas só encontrei essa: Se vocês souberem de alguma que possam compartilhar, eu agradeço!
  12. Sim, eu entendi isso. O problema é que com essa disposição de 50%-30%-10%, em 10% das vezes não acontecerá do jogador ganhar qualquer um dos itens listados. Mesmo que o sorteio dos itens seja independente, ainda há o risco também de nenhum dos itens ser sorteado, então eu assumi que ele simplesmente perderá em 10% das vezes. @leozincorsair Sorteio para ganhar um item ou outro, 1° script. Sorteio independente de cada item, 2° script. -- CONFIGURAÇÕES -- PR = {11413, 11414, 11467} -- ID dos itens que será sorteado. money = {9970, 'Royal Coins'} -- ID do crystal coin e nome.
  13. @leozincorsair Só tem um problema: 50 + 30 + 10 = 90%. Os outros 10% serão o quê? O jogador não ganha coisa alguma?
  14. Diga a chance que você quer para cada item. {11413, 11414, 11467}. (Algo como: 11413 = 20%, 11414 = 30% e 11467 = 50%, por exemplo).
  15. @elielder duas coisas a serem consideradas: 1°, você deu reload na configuração e nos monstros após aplicar as alterações? Do contrário, elas não surtirão efeito. 2°, a probabilidade é para cada item individualmente, então digamos que você listou nesse caso 5 itens diferentes com 0,9% de chance de drop para cada. Estatisticamente, a cada 100 criaturas que o jogador matar, ele obterá "4,5" (entre 4 e 5) itens, sendo 1 de cada. Se entre esses 5 itens, como um todo, você quiser que apenas 1 item venha de loot a cada 100 criaturas, você deve colocar neles a chance de 0
  16. @Vodkart , exatamente. Só descobri isso porque executei um serversave, até então eu não tinha recebido qualquer mensagem de erro. Consegui resolver, aparentemente! Eu simplesmente adicionei a coluna "world_id" na tabela "global_storage" e agora está funcionando. Fechei e abri o servidor e agora o script original funciona da maneira esperada e novos jogadores não ativam mais o script. O evento ocorre apenas uma vez! Ficou assim: Obrigado a todos que deram atenção ao tópico! O problema não era no script, mas sim no meu database. Obs
  17. @Vodkart irei testar logo menos e já respondo. É que este padrão se repetirá muitas vezes com outras actions e conforme a história da quest avança. O valor da tabela mudará muitas vezes por isso eu estava tentando lidar com as storages com as quais sou mais familiarizado e sei que funcionam bem para gerenciar isso. A propósito, eu fiz um teste aqui: tentei executar a função pronta de "doServerSave" logo após mudar o valor da globalstorage para ver se assim salvava, e obtive uma mensagem de erro no console. setGlobalStorageValue(9000, 1) doSaveServer()
  18. @Vodkart, se você puder, leia a resposta anterior que deixei. Eu preciso registrar o evento do NPC ter aparecido alguma vez para seguir uma quest válida para todos os players. Não estou tendo problemas em duplicar o NPC nem nada. Enquanto o servidor está rodando o script funciona perfeitamente conforme o planejado. O problema é que ao fechar/reiniciar o servidor a globalstorage perde o valor e aí tudo recomeça, o que eu não quero que aconteça. Para solucionar isso eu preciso ou manter o valor da globalstorage, que eu não sei por que diabos some, ou atualizar o valor de uma storage dos players
  19. @lordzetros o problema é que eu quero que seja um evento único ao longo de todo o jogo, entende? Esse NPC inclusive irá sumir depois de outro acontecimento. Preciso que o aparecimento dele fique registrado mesmo depois do servidor ser fechado/reiniciado. Eu pretendia utilizar as storages porque depois as usarei como andamento de uma quest que vale para todo e qualquer jogador. Eu sei que isso será possível da seguinte forma: 1) a globalstorage 9000 recebe o valor 1 e isso fica salvo, mesmo quando o servidor reiniciar (seria o ideal, acredito), ou... 2) todos os players rece
  20. Base: TFS 0.4.0 Qual erro está surgindo/O que você procura? Resolvi fazer um script para quando o player pisasse em um determinado SQM, surgisse um NPC em certo ponto do mapa. A minha ideia era que o npc surgisse apenas uma vez, então resolvi utilizar uma globalstorage para que assim que o primeiro player acionasse o evento, todos os demais não conseguissem. O script funcionou perfeitamente, e de fato apenas o primeiro player consegue trazer o NPC para o local desejado. O problema é que a global storage não fica salva no valor que eu determinei (no caso, "1") e qu
  21. @egyptPOWER , sim, eu copiei como padrão outros itens que eu sei que são "useable" como picaretas, cordas e runas. Mudei tanto no ObjectBuilder quanto no OTItemEditor. --- EDIT --- Eu refiz tudo do começo, refiz o dat e o otb e agora funcionou com o código do Sttorm. Não vejo muito motivo, porque eu já tinha atualizado-os antes no ObjBuilder e no OTItemEditor, mas sei lá... talvez alguma desatenção? Haha. Obrigado aos que tentaram me ajudar.
  22. @Sttorm obrigado por tentar ajudar, mas com este código simplesmente nada acontece. Nenhum erro na distro, nenhuma mensagem de retorno, nem nada.
  23. Gostaria de fazer uma action para um item que eu pudesse utilizar em outro player e, ao fazê-lo, fizesse o valor de uma storage (3999) desse player alvo mudar para 3. OBS: TFS 0.4.0 Eu tentei fazer eu mesmo, mas percebi que eu não sei como fazer isso por completo. Criei uma action.lua, registrei no actions.xml para o id do item e com itemeditor/objectbuilder ainda editei os atributos desse item específico para que fosse utilizável e etc... Pois bem, o código funciona e eu consigo utilizar o item normalmente, mas o meu problema é: O item só pode ser utilizado pelo
  24. @Hokograma , a verdade é que a forma como você lê isso vai depender do código base que você utilizou na source. Supondo que seja o padrão, a leitura é feita desta forma: Vou chamar esses 4 termos aí dentro dos parênteses de "a", "b", "c" e "d" a = multiplicador mínimo da fórmula base de dano mágico b = constante adicionada ao dano mínimo c = multiplicador máximo da fórmula base de dano mágico d = constante adicionada ao dano máximo Lembrando que o dano vai variar entre "min" e "max". Traduzindo: se eu coloco (-2, -15, -3, - 60)
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo