Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2221
  • Registro em

  • Última visita

  • Dias Ganhos

    60

Tudo que Yan Oliveira postou

  1. Que bom que funcionou ?.
  2. Considerando que esse script está funcionando é só substituir o código por esse: local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM function onUse(cid, item, fromPosition, itemEx, toPosition) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false --[[if expItem.timeType == "death" then tempo = "death" death = true else]] if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, 45144) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, 45144, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Só colocar o id do efeito na variável effect que coloquei lá em cima. Avisa se der algum erro
  3. E o que você quer dizer com Mini Boss? Quer o evento deles, arquivo xml ou quer sprite ? Precisa especificar seu pedido.
  4. Yan Oliveira

    boss room

    Cara é como te falei por PM, você tem que falar qual erro que deu porque eu nunca mexi com OTS. Mostra a print do erro quando tentou inserir o script que fiz.
  5. Qual é a versão da TFS?
  6. Yan Oliveira

    Event Boss

    Nunca mexi com OTS. Tenta usar esse script no OTS e se der erro manda print da distro.
  7. Qual é a versão da sua TFS?
  8. Se deu certo é o que importa ☺️. Mas, poste a solução que descobriu para ajudar outras pessoas com problemas parecidos.
  9. Yan Oliveira

    Erro actions

    Posta esse script startup.lua da pasta GlobalEvents.
  10. Está estranho o jeito que você está usando o addEvent. Primeiro que só tem duas formas de usar o addEvent, sendo uma que é usando uma função anônima, ou seja, você cria uma função dentro do addEvent no primeiro parâmetro como você fez, e a segunda é usando uma função já existente. Só que, independente de qual maneira que você vai usar, não pode usar parâmetro dentro da função no primeiro parâmetro do addEvent como você está fazendo com: addEvent(function(flag) ... Até porque você já criou a variável flag, não faz sentido passar ela como parâmetro sendo que já é uma variável existente. E a segunda maneira de usar uma função existente que tem parâmetros, é você modular esses parâmetros a partir do terceiro parâmtro do addEvent, porque o primeiro é a função e o segundo é o tempo que o addEvent será executado novamente em milissegundos: function teste(message) return message // RETORNA PARÂMETRO PASSADO end local mensagem = "Essa é minha mensagem." // VARIÁVEL PARA RECEBER UMA STRING PARA FICAR MAIS LEGÍVEL O ADDEVENT addEvent(teste, 60000, mensagem) // ORDEM DOS PARÂMETROS DO addEvent(FUNÇÃO, TEMPO, PARÂMETRO1, PARÂMETRO2, ...) Fiz um exemplo para você acima sobre o addEvent com uma função existente, a função apenas retorna o parâmetro e o addEvent executa a mensagem a cada 1 minuto, pois está em milissegundos. Lembrando que se a função existente passada como parâmetro no addEvent tiver parâmetros, todos os parâmetros devem ser inseridos no addEvent, exemplo: function broadcast(storage, vezes) if (vezes > 0) and (storage <= os.time()) then doBroadcastMessage("Essa mensagem será repetida por mais " .. vezes .. " vezes.") // TFS 0.X addEvent(broadcast, 60000, storage, vezes - 1) else doBroadcastMessage("As mensagens foram encerradas por hoje!") setPlayerStorageValue(cid, storage, os.time() + (24*60*60)) end end function onThink(cid, interval) local storage = 12548 broadcast(storage, 5) // A MENSAGEM SERÁ REPETIDA 5 VEZES return true end Acima tem um exemplo de usar uma função existente de forma recursiva no addEvent que será repetida 5 vezes sendo um evento global executado uma vez por dia. Agora acho que ficou mais claro sobre o addEvent, então você pode usar assim o addEvent no seu caso: local function executaFlag(flag, valor) jogadorCasa[flag] = valor end local flag = 1 local valor = 0 local tempo = (getPlayerStorageValue(cid, storageFish + flag) - os.time()) * 1000 addEvent(executaFlag, tempo, flag, valor) Testa e fala se ainda continua dando problema.
  11. Está usando item editor novo? Os antigos só dão problemas.
  12. Yan Oliveira

    Vocation Changer

    Você está falando três coisas diferentes no mesmo tópico. Vamos lá! Sobre esse erro de banco que está dando na distro, é que, esse é um problema de query com o Sqlite. O Sqlite tem uma peculiaridade bem chata com LIMIT, para funcionar direto (sem sub-query), tem que compilar o Sqlite com um comando atribuindo aos comandos INSERT/SELECT/UPDATE/DELETE o LIMIT. Mas, a maioria dos Sqlite que vem nos Tibias e Derivados não vem com essa atribuição. Então para resolver o problema, você vai ter que fazer uma sub-query. Tem que achar o arquivo que faz essa query, e trocar a query para: UPDATE `players` SET `broadcasting` = 0, `viewers` = 0 WHERE id IN (SELECT `id` FROM `players` WHERE `id` = 24 LIMIT 1) Sobre o NPC, é fácil fazer, mas, não entendi muito bem o que quis dizer com "não quer por promotion", como você quer então? E esse erro de query na distro, não é para ter haver com mudar vocation de player, isso é quando você vai assistir outro player. Sobre o Account Manager, você tem que postar o arquivo login.lua e informar os id de cada classe para arrumar.
  13. Então você quer uma "hunt diária" que pode ser de 1-5 players e que consiga ter acesso a área X ao clicar na alavanca?
  14. Eu não entendi muito o que quis dizer. Mas, crie um tópico novo para sua dúvida, pois ela é sobre TFS 0.4, que não é o caso do autor do tópico que é 1.2. Cria um tópico novo, e explica direitinho o que quer que eu te ajudo.
  15. Parabéns pelo conteúdo! Vai ser muito útil para vários servidores. Fico feliz que em pleno 2020 ainda há membros como você que trazem conteúdos e recursos novos para a comunidade do Xtibia, pois, muitas pessoas não ajudam em nada e não trazem conteúdos/recursos algum para o fórum, mas, para vir pegar conteúdos novos, aparecem rapidinho! Sendo que muitos desses, tem capacidade para contribuir. Enfim, fico feliz que ainda contribuam para a comunidade.
  16. Primeiro que você não pode colocar links de outros fóruns aqui, recomendo remover porque isso pode te gerar banimento. Sobre seu pedido, não tem como dar atributo para players, somente para itens. O seu pedido não faz muito sentido, usar uma spell para dar atributo ao player. Mas, você pode ao usar a spell, atribuir um atributo para algum item.
  17. Poste o script da spell.
  18. Acabei de fazer uma função para você que faz isso, é temporário (pois seta o valor para 0 depois de 10 segundos).
  19. Tem algumas coisas estranhas no seu script, primeiramente, na função: function getDmg_Brush_2(cid, level, maglevel) return (50) * -1, (150) * -1 end Por que está passando parâmetros na função se você nem os usa ou retorna? E na função RunPart(c, cid, var, dirList, dirEmitPos), você passa 5 parâmetros, porém, quando você chama a função RunPart na função onCastSpell e no addEvent, você só passa três parâmetros: RunPart(combat0_Brush, cid, var) addEvent(RunPart, 2000, combat20_Brush_2, cid, var) E sobre o que disse em relação ao efeito sair em outro lugar quando o summon se movimenta, isso é porque, a spell está saindo baseado no posição que pega da criatura:
  20. Quando você fala que da reload, é dentro do jogo? Ou reiniciando a distro?
  21. Tudo bem, sem problemas amigo! Sei que você é iniciante, porém tem que avisar para você saber.
  22. Qual a versão da sua TFS?
  23. A função setCombatFormula(combat, skill, valorA, valorB, valorC, valorD) funciona assim: O primeiro parâmetro (combat) é o combat como o nome diz O segundo parâmetro (skill) é o tipo da skill Agora o (terceiro) parâmetro, que é um conjunto de quatro parâmetros, que são na ordem: valorA = Multiplicador da skill. valorB = Dano mínimo que a skill vai causar. valorC = Multiplicador de acordo com o level do player. valorD = Dano máximo que a skill vai causar. No seu caso tem 8 parâmetros de valores, não sei porque, nunca vi assim. Lembrando que se quer fazer uma spell de heal (cura), o segundo e o quarto valor (parâmetro) não podem ser negativos, do contrário irá curar o inimigo.
  24. E essa lava é um item, tile, ground?
  25. Exatamente, está confuso principalmente pelo título do tópico, que não tem nada haver com o pedido. Você pode fazer um addEvent com a função doItemSetAttribute: local function setAttribute(item, value, time) if time > 0 then doItemSetAttribute(item, "lifeabsorb", value) addEvent(setAttribute, 1000, value, time - 1) else doItemSetAttribute(item, "lifeabsorb", 0) end end Fiz uma função para você, não sei se quer que isso aconteça ao clicar em um item, mas, só colocar essa função em cima da função principal (onUse por exemplo) e dentro da função principal chama a função feita setAttribute(item, value, time), na qual os parâmetros item, value e time são: Item = Id do item Value = Valor do atributo (pode deixar 100 mesmo como deixou no xml) Time = Duração em segundos (deixe 10 já que é o valor que quer) Pelo que entendi, é isso que quer. Veja se é isso mesmo.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...