-
Total de itens
2221 -
Registro em
-
Última visita
-
Dias Ganhos
60
Tudo que Yan Oliveira postou
-
Que bom que funcionou ?.
-
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
-
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.
-
Wall que verificar se o Player tem storage
pergunta respondeu ao vitorelias de Yan Oliveira em Scripts
Qual é a versão da TFS? -
Nunca mexi com OTS. Tenta usar esse script no OTS e se der erro manda print da distro.
-
Qual é a versão da sua TFS?
-
Se deu certo é o que importa ☺️. Mas, poste a solução que descobriu para ajudar outras pessoas com problemas parecidos.
-
Posta esse script startup.lua da pasta GlobalEvents.
-
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.
-
[Item Editor] A cadeia de caracteres de entrada não estava em um formato correto.
pergunta respondeu ao Hine de Yan Oliveira em Clients
Está usando item editor novo? Os antigos só dão problemas. -
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.
-
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?
-
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.
-
otclient [OTClient] Sistema de Dialogo Otpokemon
tópico respondeu ao Gengo de Yan Oliveira em Tutoriais de Clients
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. -
adicionei funçao getPlayerLifeAbsorb(cid)
pergunta respondeu ao Senju uchira de Yan Oliveira em Scripts
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. -
adicionei funçao getPlayerLifeAbsorb(cid)
pergunta respondeu ao Senju uchira de Yan Oliveira em Scripts
Poste o script da spell. -
adicionei funçao getPlayerLifeAbsorb(cid)
pergunta respondeu ao Senju uchira de Yan Oliveira em Scripts
Acabei de fazer uma função para você que faz isso, é temporário (pois seta o valor para 0 depois de 10 segundos). -
Magia com dois efeitos saindo no mesmo lugar em tempos diferentes
pergunta respondeu ao Icaro Simoes de Yan Oliveira em Scripts
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: -
Quando você fala que da reload, é dentro do jogo? Ou reiniciando a distro?
-
Tudo bem, sem problemas amigo! Sei que você é iniciante, porém tem que avisar para você saber.
-
Qual a versão da sua TFS?
-
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.
-
Como fazer Lava subir em determinado tempo
pergunta respondeu ao Narutinbrzica de Yan Oliveira em Scripts
E essa lava é um item, tile, ground? -
adicionei funçao getPlayerLifeAbsorb(cid)
pergunta respondeu ao Senju uchira de Yan Oliveira em Scripts
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.