Postado Março 15, 2018 7 anos TFS 0.4 Preciso de ajuda com um Script de uma Magia Buff : Saudações, estou com um problema em uma script de um Buff que tem como ideia a, Alteração da Vocação + Outif + Bonus de Atributos por um determinado Tempo, apos o tempo de duração da magia esgotar o a vocação retorna a original e o buff se encerra. Magia Buff.lua local outfit = {lookType = 157} -- Outif que usará durante o tempo da magia. local tempo = 300 * 1000 -- Tempo de duração da magia. local voc = 50 -- Vocação atribuida durante o tempo da magia. local ml = 70 -- Bonus Magic Level local skillfist = 50 -- Bonus Atributos local skillsword = 50 -- Bonus Atributos local skillaxe = 50 -- Bonus Atributos local skillclub = 50 -- Bonus Atributos local skilldistance = 50 -- Bonus Atributos local skillshield = 50 -- Bonus Atributos local health = 1000 -- Bonus Atributos local mana = 1000-- Bonus Atributos local combat = createCombatObject() local mhealth = 10000 -- Bonus Atributos local mmana = 10000 -- Bonus Atributos setCombatParam(combat, COMBAT_PARAM_EFFECT, 42) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield) setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTH, mhealth) setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANA, mmana) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 100) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_REGENERATION) setConditionParam(condition, CONDITION_PARAM_SUBID, 1) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, mana) setConditionParam(condition, CONDITION_PARAM_MANATICKS, 1000) setCombatCondition(combat, condition) local sys = createConditionObject(CONDITION_OUTFIT) setConditionParam(sys, CONDITION_PARAM_TICKS, tempo) addOutfitCondition(sys, outfit) setCombatCondition(combat, sys) function onCastSpell(cid, var) registerCreatureEvent(cid, "stordeath") setPlayerStorageValue(cid, voc_stor, getPlayerVocation(cid)) doPlayerSetVocation(cid, voc) addEvent(doPlayerSetVocation,tempo,cid,getPlayerStorageValue(cid, voc_stor)) addEvent(setPlayerStorageValue,tempo,cid,voc_stor,0) local waittime = 3600 -- Cooldown da Magia. local storage = 86825 if exhaustion.check(cid, storage) then doCreatureSay(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos.", TALKTYPE_MONSTER) return false end exhaustion.set(cid, storage, waittime) return doCombat(cid, combat, var) end Creaturescripts : stordeath.lua function onDeath(cid, corpse, deathList) local i = getPlayerStorageValue(cid, voc_stor) if i > 0 then doPlayerSetVocation(cid, i) setPlayerStorageValue(cid, voc_stor, 0) end return true end Lib : 000-constant.lua voc_stor = 86666 -- Storage que salva vocação ERRO : Consiste apos o buff se encerrar, a vocação original não volta, o buff mesmo se encerrando, acabando os atributos e voltando a outif a vocação que o buff adciona fica, permanece, ficando com a vocação para sempre, sendo que essa vocação deveria ficar somente durante o tempo de duração. Espero que tenham entendido, e que me ajudem a corrigir ! Agradeço desde já Editado Março 16, 2018 7 anos por r0bert0lol (veja o histórico de edições)
Postado Março 17, 2018 7 anos -- Por Jeremias em 17/03/2018 -- Tibiaking.com local skills = { efeito = 2, tempo = 30, magicLevel = 10, sword = 10, axe = 10, club = 10, distance = 10, shield = 10, storage = 86825, roupa = 100, voc = 1} local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, skills.magicLevel) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skills.sword) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skills.axe) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skills.club) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skills.distance) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skills.shield) setConditionParam(condition, CONDITION_PARAM_TICKS, skills.tempo*1000) setConditionParam(condition, CONDITION_PARAM_SUBID, 101) function onCastSpell(cid, var) if exhaustion.check(cid, skills.storage) then return doCreatureSay(cid, "Aguarde " .. exhaustion.get(cid, skills.storage) .. " segundos.", TALKTYPE_MONSTER) end salvarVoc = getPlayerVocation(cid) vocAntiga = tonumber(salvarVoc) outfit = getCreatureOutfit(cid) outfit.lookType = skills.roupa doSetCreatureOutfit(cid, outfit, (skills.tempo*1000)) doPlayerSetVocation(cid, skills.voc) addEvent(function() doPlayerSetVocation(cid, vocAntiga) exhaustion.set(cid, skills.storage, skills.tempo) end, (skills.tempo)*1000) doAddCondition(cid, condition) return true end Editado Março 17, 2018 7 anos por jeremias (veja o histórico de edições)
Postado Março 19, 2018 7 anos Autor @jeremias Olá Jeremias. Seu script apos usar, transforma a vocação, muda a newtype, porem o buff não acaba. Caso o personagem relogue a roupa volta ao normal, porem a vocação não volta. A Storage que conta o tempo, cooldown da magia não funciona permitindo que seja usada o tempo todo. Acredito que o erro esteja somente na segunda parte do script, a parte da storage. Agradeço por tentar ajudar, espero que continue ! haha :D pois eu não consegui resolver
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.