Postado Fevereiro 22, 2015 10 anos Olá usuários do Tibia King, eu criei 3 spells de transformação que dão buffs ao char, a minha duvida é como torna-las dependentes entre si, por exemplo, para usar a transformação "B" você tem que ter se transformado na "A" e para se transformar na "C" tem que ter passado pela "B". Vou deixar aqui o script das spells na ordem da dependência: Spell "A": local time = 180 * 1000 -- 180 * 1000 = 3 min local addShielding = 40 -- quanto de defesa aumenta local skillfist = 50 -- quantos ira aumentar o skill de Fist local cloth = {lookType = 82, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, addShielding) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 250) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(outfit, CONDITION_PARAM_TICKS, time) addOutfitCondition(outfit, cloth) setCombatCondition(combat, outfit) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Spell "B": local time = 120 * 1000 -- 120 * 1000 = 2 min local addShielding = 50 -- quanto de defesa aumenta local skillfist = 70 -- quantos ira aumentar o skill de Fist local cloth = {lookType = 83, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, addShielding) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 500) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(outfit, CONDITION_PARAM_TICKS, time) addOutfitCondition(outfit, cloth) setCombatCondition(combat, outfit) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Spell "C": local time = 60 * 1000 -- 60 * 1000 = 1 min local addShielding = 60 -- quanto de defesa aumenta local skillfist = 90 -- quantos ira aumentar o skill de Fist local health = 130 -- A cada 1 segundo quantos aumentar de vida local cloth = {lookType = 330, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, addShielding) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 750) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(outfit, CONDITION_PARAM_TICKS, time) addOutfitCondition(outfit, cloth) setCombatCondition(combat, outfit) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Eu sou novo aqui, peço que me perdoem se cometi algum erro em relação ao post, desde já agradeço atenção!
Postado Fevereiro 22, 2015 10 anos vc pode setar um storage na transform A e só permitir a B se tiver o storage da A.. e dps fazer a mesma coisa pra B e C. Também dá pra vc checar pelo outfit Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Fevereiro 22, 2015 10 anos Autor Eu acrescentei um local storage na spell A: local storage = 102054 function onCastSpell(cid, var) setPlayerStorageValue(cid, 102054,1) doCombat(cid, combat, var) end e isso na B: local storage = 102055 function onCastSpell(cid, var) if getPlayerStorageValue(cid, 102054) == 1 then doCombat(cid, combat, var) setPlayerStorageValue(cid, 102055,1) else doPlayerSendCancel(cid, "Desculpe mas voce nao se transformou em A") end Mas agora ele nem casta a spell, pode me dizer oque eu errei? Achei meu erro os scripts ficaram assim: Spell A: local time = 180 * 1000 -- 180 * 1000 = 3 min local addShielding = 40 -- quanto de defesa aumenta local skillfist = 50 -- quantos ira aumentar o skill de Fist local storage = getPlayerStorageValue(cid,102054) local cloth = {lookType = 82, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, addShielding) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 250) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(outfit, CONDITION_PARAM_TICKS, time) addOutfitCondition(outfit, cloth) setCombatCondition(combat, outfit) function onCastSpell(cid, var) if getPlayerStorageValue(cid,102054) ~= 1 then doCombat(cid, combat, var) setPlayerStorageValue(cid, 102054,1) else doPlayerSendCancel(cid, "Voce ja esta transformado") end end Spell B: local time = 120 * 1000 -- 120 * 1000 = 2 min local addShielding = 50 -- quanto de defesa aumenta local skillfist = 70 -- quantos ira aumentar o skill de Fist local storage = getPlayerStorageValue(cid,102055) local cloth = {lookType = 83, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, addShielding) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 500) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(outfit, CONDITION_PARAM_TICKS, time) addOutfitCondition(outfit, cloth) setCombatCondition(combat, outfit) function onCastSpell(cid, var) if getPlayerStorageValue(cid,102054) == 1 then if getPlayerStorageValue(cid,102055) ~= 1 then doCombat(cid, combat, var) setPlayerStorageValue(cid, 102055,1) else doPlayerSendCancel(cid, "Voce ja esta transformado") end else doPlayerSendCancel(cid, "Voce ainda nao abriu os tres portoes") end end Mas agora quanto eu uso a spell B a outfit permanece a da spell A, saberia me responder? Agradeço pela resposta de antes, ja curti e soubesse eu reputava
Postado Fevereiro 22, 2015 10 anos Solução ele não casta a A? ps: usa os.time() pq assim se ele castar a A uma vez ele vai poder castar a B sempre porque o storage vai permanecer; A: local time = 180 * 1000 -- 180 * 1000 = 3 min local addShielding = 40 -- quanto de defesa aumenta local skillfist = 50 -- quantos ira aumentar o skill de Fist local cloth = {lookType = 82, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, addShielding) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 250) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(outfit, CONDITION_PARAM_TICKS, time) addOutfitCondition(outfit, cloth) setCombatCondition(combat, outfit) function onCastSpell(cid, var) setPlayerStorageValue(cid, 10205, os.time() + 5) -- diminui em 1 digito o tamanho da key e to setando 5 segundos pra usar a prox transformacao doCombat(cid, combat, var) return true end B: local time = 120 * 1000 -- 120 * 1000 = 2 min local addShielding = 50 -- quanto de defesa aumenta local skillfist = 70 -- quantos ira aumentar o skill de Fist local cloth = {lookType = 83, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, addShielding) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 500) setConditionParam(condition, CONDITION_PARAM_TICKS, time) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(outfit, CONDITION_PARAM_TICKS, time) addOutfitCondition(outfit, cloth) setCombatCondition(combat, outfit) function onCastSpell(cid, var) if getPlayerStorageValue(cid, 10205) - os.time() >= 0 then setPlayerStorageValue(cid, 10206, os.time() + 5) doCombat(cid, combat, var) else doPlayerSendCancel(cid, "Desculpe mas voce nao se transformou em A") end return true end Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Fevereiro 22, 2015 10 anos Autor Eu tinha quase certeza que ia ser você quem resolveria meu problema, muito obrigado!
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.