Postado Dezembro 4, 2014 10 anos Eai pessoas, tudo bem? Eu vim aqui pedir uma ajudinha. Eu possuo uma spell, nela eu posso colocar o ataque mínimo e máximo. Para isso tenho que fazer uma conta. Na conta eu posso considerar o nível do player e o magic level. Aqui vem meu pedido. Eu quero poder considerar também as skills e de sword, axe, distance, mace, etc.. (e se possível de defense e a quantidade de vida e mana). Parte da spell que tem que ser mudada. (eu acho) local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 9) setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 156) function onGetFormulaValues(cid, level, maglevel) local magDamage, levelDamage = maglevel, level local formula_min = -1*level local formula_max = -3*level/2 return formula_min, formula_max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") Quer aprender a mapear? Discord: Natan#6301
Postado Dezembro 4, 2014 10 anos nesse caso vc precisaria fazer o script de outra forma pois esse onGetFormulaValue só aceita maglevel e level. Posta ai o script inteiro da magia que eu refaço ele pra vc 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 Dezembro 4, 2014 10 anos Autor Script: local scom1 = createCombatObject() local scom2 = createCombatObject() local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 9) setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 156) function onGetFormulaValues(cid, level, maglevel) local magDamage, levelDamage = maglevel, level local formula_min = -1*level local formula_max = -3*level/2 return formula_min, formula_max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 0) setCombatParam(combat2, COMBAT_PARAM_HITCOLOR, 156) function onGetFormulaValues(cid, level, maglevel) local magDamage, levelDamage = maglevel, level local formula_min = -1*level local formula_max = -2*level/2 return formula_min, formula_max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(scom1, area1) setCombatArea(scom2, area2) function onTargetTile(cid, pos) doCombat(cid,combat1,positionToVariant(pos)) end function onTargetTile2(cid, pos) doCombat(cid,combat2,positionToVariant(pos)) end setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile") setCombatCallback(scom2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2") local function onCastSpell1(parameters) doCombat(parameters.cid, scom1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, scom2, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 500, parameters) return TRUE end Quer aprender a mapear? Discord: Natan#6301
Postado Dezembro 5, 2014 10 anos Solução local arr1 = { {1, 1, 1}, {1, 2, 1}, {1, 1, 1} } local area1 = createCombatArea(arr1) local arr2 = { {1, 1, 1}, {1, 2, 1}, {1, 1, 1} } local area2 = createCombatArea(arr2) function onCastSpell(cid, var) local maglevel, level, mana = getPlayerMagLevel(cid), getPlayerLevel(cid), getCreatureMana(cid) local axe, sword, club, distance = getPlayerSkillLevel(cid, 3), getPlayerSkillLevel(cid, 2), getPlayerSkillLevel(cid, 1), getPlayerSkillLevel(cid, 4) local shield, health = getPlayerSkillLevel(cid, 5), getCreatureHealth(cid) local formula = { min = (level + maglevel + axe + sword + club + shield + mana), max = (level + maglevel + axe + sword + club + shield + mana + health) } addEvent(function() if isCreature(cid) then doAreaCombatHealth(cid, 1, getCreaturePosition(cid), area1, -formula.min, -formula.max, 9) end end, 100) addEvent(function() if isCreature(cid) then doAreaCombatHealth(cid, 1, getCreaturePosition(cid), area1, -formula.min, -formula.max, 0) end end, 500) return true end só configura na formula os valores minimos e máximos que vc quer. Ali em cima é a area Aqui vc tem a primeira spell: doAreaCombatHealth(cid, 1, getCreaturePosition(cid), area1, -formula.min, -formula.max, 9) e aqui tem a segunda doAreaCombatHealth(cid, 1, getCreaturePosition(cid), area1, -formula.min, -formula.max, 0) 1 ali é o tipo de dano, 1 significa dano físico mas vc pode alterar seguindo essa tabela: COMBAT_NONE = 0 COMBAT_PHYSICALDAMAGE = 1 COMBAT_ENERGYDAMAGE = 2 COMBAT_EARTHDAMAGE = 4 COMBAT_POISONDAMAGE = 4 COMBAT_FIREDAMAGE = 8 COMBAT_UNDEFINEDDAMAGE = 16 COMBAT_LIFEDRAIN = 32 COMBAT_MANADRAIN = 64 COMBAT_HEALING = 128 COMBAT_DROWNDAMAGE = 256 COMBAT_ICEDAMAGE = 512 COMBAT_HOLYDAMAGE = 1024 COMBAT_DEATHDAMAGE = 2048 area1 e 2 são as areas lá em cima do script e as formulas vc edita da forma que quiser. O 9 e o 0 são os efeitos que saem; abaixo dos combats vc vai ter isso daqui: end end, 100) esse 100 e o outro 500 lá representam o tempo em milisegundos até o combat sair, se vc quiser aumentar o tempo entre as duas spells é só aumentar esse valor (lembrando que é em milisegundos [1 segundo = 1000 milisegundos]. Da forma que está colocado a primeira spell sai em 0,1 segundo e a segunda sai em 0,4 segundos dps da primeira.. as duas spells acabam dps de meio segundo. Espero que tenha entendido 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 Dezembro 6, 2014 10 anos Autor Muito obrigado pela ajuda. Agora não posso testar a spell, assim que eu puder, se eu tiver alguma duvida posso mandar uma mensagem privada? Editado Dezembro 6, 2014 10 anos por GoTheHell (veja o histórico de edições) Quer aprender a mapear? Discord: Natan#6301
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.