Postado Dezembro 13, 2014 10 anos Boa noite, me desculpem se estiver na área errada!. Bom galera, o título do tópico não especificou muito bem o que eu quero, mas enfim, é o seguinte, estou montando um servidor sem vocações, isso mesmo! todos começarão com a mesma vocação e vão permanecer assim, quero que o jogador monte sua build de acordo com equips, ex : se eu usar rapier vou ganhar bonus de atk speed, o mesmo acontece usando equipamentos leves como couro etc... Até ai tudo bem, mas o meu problema são as skills ( magias ) , peço encarecidamente que alguém me ajude com isso !!! eu gostaria que quando eu usasse uma certa arma, ela me desse uma spell, e que essa spell fosse removida quando eu tirasse a arma..! conseguiram entender ? um exemplo : ex : usando rapier, vou ganhar skills de sangramento, usando shields buffs de shielding, usando swords, magias com sword, e assim vai...., ps : isso dependendo da skill também, então se eu usar o exemplo da rapier, vamos supor que eu estou usando ela e tenho uma skill de ataque e uma de sangramento, mas a de sangramento só vou poder usar quando atingir uma certa skill com a rapier. sei que ficou um pouco confuso, mas tenho certeza que alguem vai conseguir me ajudar , por favor, simplifiquem o máximo, pois sou iniciante! , muiiito obrigado, aguardo feedback :* .
Postado Dezembro 13, 2014 10 anos eu gostaria que quando eu usasse uma certa arma, ela me desse uma spell, e que essa spell fosse removida quando eu tirasse a arma Um detalhe ou outro ficou um tanto quanto confuso, então me avise se eu não entendi muito bem o que você quis dizer. Se por exemplo, todos os rings habilitassem determinada spell, então você poderia fazer uma checagem do slot antes do callback da mesma: if getPlayerSlotItem(cid, CONST_SLOT_RING).uid < 1 then doPlayerSendCancel(cid, "You can't cast the spell without using a ring.") return false end Se forem spells pra itens distintos, você pode fazer o uso de storages. Criando movements com callback de onEquip e onDeEquip que atribuam ao player um valor dessas storages (quando ele equipar/remover o item). Depois é só fazer a checagem do valor da storage no callback da spell. Exemplo: movement script: local stor = 12345 -- storage function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) return true end Checagem na spell light healing (exura): local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) local stor = 12345 -- storage if getPlayerStorageValue(cid, stor) < 1 then doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.") return false end return doCombat(cid, combat, var) end Editado Dezembro 13, 2014 10 anos por Suicide (veja o histórico de edições) The corrupt fear us. The honest support us. The heroic join us.
Postado Dezembro 15, 2014 10 anos Autor me desculpe mesmo pela confusão kkkk , mas é isso mesmo, uma determinada spell , habilitada pelo uso do item equipado! não entendo muito de storages, mas vamos lá! Pelo que eu entendi ( sou leigo, perdão ) : Eu adiciono uma nova storage, que vai ter um número ' x x x x ' e nela, as funções de equipado e desequipado . function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) < esse é o valor de equipadofunction onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) e esse o de desequipado Quando eu for criar uma nova spell , por exemplo, eu vou adicionar a linha: function onCastSpell(cid, var) local stor = 'x x x x' -- NÚMERO DA STORAGE if getPlayerStorageValue(cid, stor) < 1 << Checagem pra ver se está equipado ( se estiver ,funciona corretamente ) doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.") < ( Caso não esteja, a spell não funciona e essa mensagem é exibida ) desculpe se fiz confusão mais uma vez!! mas só queria confirmar se é assim que funciona, muito obrigado
Postado Dezembro 15, 2014 10 anos Solução Eu adiciono uma nova storage, que vai ter um número ' x x x x ' e nela, as funções de equipado e desequipado . Você cria um movement script que atribui ao player determinado valor de uma storage ao equipar/remover o item de determinado slot. local stor = 12345 -- storage function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) -- já que é no callback de equipar, ele recebe o valor de ID 1 (como sendo positivo para a checagem do uso da spell) return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) -- ao remover o item, ele recebe o valor de ID -1 (como sendo negativo para a checagem do uso da spell) return true end Configure as tags como movevents Equip / DeEquip. Ex: <movevent type="Equip" itemid="ITEMID" slot="ring" event="script" value="filename.lua"/> <movevent type="DeEquip" itemid="ITEMID" slot="ring" event="script" value="filename.lua"/> local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) local stor = 12345 -- storage if getPlayerStorageValue(cid, stor) < 1 then -- checa se o valor da storage no player é menor que 1 (sendo que 1 seria o necessário) doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.") -- a informação de que ele nao pode conjurar a spell é dada return false -- retorna false ao callback, resultando em não conjurar a spell end return doCombat(cid, combat, var) -- se a checagem acima for false, ou seja, maior ou igual a 1 (valor necessário), então significa que o player está com o item necessário equipado e a conjuração da spell é feita end Qualquer dúvida ou problema, é só relatar por aqui. Editado Dezembro 15, 2014 10 anos por Suicide (veja o histórico de edições) The corrupt fear us. The honest support us. The heroic join us.
Postado Dezembro 15, 2014 10 anos Autor Consegui !! fiz o teste, e não consegui usar a magia sem o item,funcionou do jeitinho que eu queria, agora só preciso encontrar o local pra mudar a storage dos players pra deixar no 1 e permitir a utilização da spell quando equipar!! , me ajudou muito mesmo !!! não sei como agradecer !! 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.