Postado Maio 21, 2022 3 anos Será que alguém conseguiria fazer o seguinte script para mim? Funciona assim, seria uma "food" mas só que lembra uma potion, que vai dar heal por segundo e buff. Exemplo: O player usa o item e por x tempo em segundos ele se cura em x% de vida e ganha um buff de x em fishing skill, fica um effect constante nele e o item some como se fosse uma food e so pode ser usado novamente quando acabar o tempo do primeiro uso. No caso preciso restringir o uso para apenas algumas vocations! Desde já agradeço.
Postado Maio 23, 2022 3 anos vc consegue um script de buf de spell? possivelmente vc deve ter algum, dai vc bota ele pra funcionar como runa, imagino que funcionaria,
Postado Julho 13, 2022 2 anos Autor Em 15/06/2022 em 15:49, daviscript disse: Quando o player relogar ele perderá esse buff? Desculpe a demora, sim, ao relogar ou morrer ele vai perder o buff e a cura
Postado Julho 16, 2022 2 anos Em 21/05/2022 em 15:20, Nother disse: Será que alguém conseguiria fazer o seguinte script para mim? Funciona assim, seria uma "food" mas só que lembra uma potion, que vai dar heal por segundo e buff. Exemplo: O player usa o item e por x tempo em segundos ele se cura em x% de vida e ganha um buff de x em fishing skill, fica um effect constante nele e o item some como se fosse uma food e so pode ser usado novamente quando acabar o tempo do primeiro uso. No caso preciso restringir o uso para apenas algumas vocations! Desde já agradeço. fiz aqui meu bom, mas creio que será necessário você testar antes de por em prática kkkkkk, caso tenha algum bug, manda print do erro no console que aparecer PF. colocar em qualquer arquivo action.lua ex: data > actions > scripts > foodBuff.lua colocar no actions.xml data > actions > actions.xml <action itemid="9998 script="foodBuff.lua"/> TROCAR O 9998 PELO ID DO SEU FOOD/ITEM local itemID = 9998 -- id do item local tempoDeBuff = 60 -- em segundos local porcentagemDeCura = 2 -- vai curar 2% por [tempo entre curas] durante [tempo de buff] local qtdDeSkill = 10 -- quantidade de skill que dará local efeito = 4 -- efeito que sairá do player local removerItem = true -- remover o item? true = remove, false = não remove local tempoEntreCuras = 1 * 1000 -- tempo entre o efeito da cura, 1 * 1000 = 1000ms logo //1 segundo local need_vocation = {1,2,3,4,5} -- IDs da vocações QUE PODEM usar o food local buff = SKILL_FISHING -- qual skill vai aumentar //pra saber qual skill vc quer aumentar procure por "skill" em "lib/000-constant.lua" local storage = 5474767 -- pode ser qualquer numero //não pode repetir numero de outra storage existente local storage_buff_ativo = 5474768 local function CuraFoodBuff(cid, flag) if isCreature(cid) then --se estiver logado entra, se não termina o loop, ou seja, se deslogar/morrer perde o efeito do food if flag > 0 then doCreatureAddHealth(cid, (getCreatureMaxHealth(cid) * (porcentagemDeCura/100))) -- n mexer :P doSendMagicEffect(getThingPos(cid), efeito) -- efeito que vai sair do player flag = getPlayerStorageValue(cid, storage) - os.time() addEvent(CuraFoodBuff, tempoEntreCuras, cid, flag) -- chama de novo a função passando -1 segundo pro tempo else doPlayerAddSkill(cid, buff, -qtdDeSkill, true) -- quando acabar o efeito seta o fishing pro normal setPlayerStorageValue(cid, storage_buff_ativo, -1) return true end else return true end end function onUse(cid, item, frompos, item2, topos) local msg_no_vocation = "Sua Vocação não pode usar esse item!" -- mensagem caso não tenha a voc necessária local msg_sucess = "Você usou o Heal Food, o efeito irá durar"..tempoDeBuff.." segundos" -- mensagem de sucesso local no_have_voc = true if item.itemid == itemID then local tempo = getPlayerStorageValue(cid, storage) - os.time() -- tempo recebe o tempo restante pra usar a potion de novo if tempo > 0 then -- se tempo for maior que 0, significa que está em uso if tempo > 60 then -- só pra mostrar bonitinho doPlayerSendCancel(cid,"Você precisa esperar "..math.floor(tempo/60).." minutos e "..(tempo%60).." segundos.") else doPlayerSendCancel(cid,"Você precisa esperar "..(tempo%60).." segundos.") end return true end for i=1, #need_vocation do -- checa as vocações que podem usar o food //setadas no cabeçalho if getPlayerVocation(cid) == need_vocation[i] then -- se for, aparece msg de sucesso na tela doPlayerSendTextMessage(cid, 22, msg_sucess) no_have_voc = false -- seta a variavel de não ter voc pra false, ou seja tem a voc necessaria break -- quebra o for depois disso //necessario deixar o BREAK end end if no_have_voc then doPlayerSendTextMessage(cid, 22, msg_no_vocation) -- se não tiver a vocação necessaria, manda msg avisando return true -- e sai da função end setPlayerStorageValue(cid, storage, os.time() + tempoDeBuff) -- storage pra salvar o tempo de buff, apenas pra tirar o skill de fishing caso o player deslogue/morra doPlayerAddSkill(cid, buff, qtdDeSkill, true) -- aumenta o skill setado no cabeçalho setPlayerStorageValue(cid, storage_buff_ativo, 1) if removerItem then -- se removerItem no cabeçalho for true REMOVE O ITEM, se não, não remove doRemoveItem(item.uid, 1) -- função de remover o item, não precisa mexer end CuraFoodBuff(cid, tempoDeBuff) -- chama a função end return true end coloquei como exemplo no script > 2% de cura por segundo, durante 60 segundos, OU SEJA, o player vai curar 100% (na vdd ele irá curar 120%) de life (PORÉM não irá bugar pq caso o tibia reconheça que o player está com 100% de vida, ele não extrapola esse limite de 100%, só ignora a cura). obviamente vc pode alterar como quiser no script tempoDebuff = 30 (durante 30 segundos) tempoEntreCuras = 1 * 500 (a cada meio segundo) e o MAIS IMPORTANTE, itemID = 9998 (trocar o 9998 pro id do item) PS: caso o player morra/deslogue, irá perder o buff de cura da potion, PORÉM não perderá o skill **OBRIGATÓRIAMENTE** você precisará checar isso em algum creaturescript de login ex: data > creaturescripts > scripts > login.lua (login.lua é um arquivo padrão que existe em todo ot) procura por: function onLogin(cid) e logo abaixo adicione isso: if getPlayerStorageValue(cid, 5474768) == 1 then local buff = SKILL_FISHING -- PRECISA SER O MESMO do colocado no script do actions local qtdDeSkill = 10 -- PRECISA SER O MESMO do colocado no script do actions local liberar_food_pra_uso_apos_morte = true --Liberar o uso do food após o player morrer com ele ativo? true = libera o uso / false = o player tem que esperar o cooldown do uso acabar if liberar_food_pra_uso_apos_morte then setPlayerStorageValue(cid, 5474767, 0) end doPlayerAddSkill(cid, buff, -qtdDeSkill, true) setPlayerStorageValue(cid, 5474768, -1) end assim que ele logar, após ter deslogado/morrido com o food la ativo, irá tirar o buff de skill que foi adicionado. CASO queira mudar o EFEITO que sai do player, vai no teu GOD, e digita /z e o numero ex: /z 5 vai sair no GOD um efeito existem 69 efeitos (em tibia normal) ai vc procura um legal, e coloca no lugar de local efeito = 10 Editado Julho 18, 2022 2 anos por FeeTads AJUSTES no for de checagem de vocação (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.